Lucene单元测试

时间:2012-03-24 21:07:36

标签: unit-testing junit lucene

我想对lucene框架进行一些单元测试,但老实说我不知道​​如何去做。我似乎无法弄清楚最基本的任务,例如:

  1. 使用MockDirectoryWrapper设置模拟目录
  2. 使用LuceneTestCase扩展我的jUnit测试类不允许我的任何测试运行
  3. 我想模拟损坏的文件错误,lockeddirectory错误等等但我很困惑如何使用MockDirectoryWrapper来做这些事情。
  4. 包含一些教程或示例的资源会很棒。谷歌似乎没有发现任何与Lucene单元测试相关的内容,虽然Lucene的网站有很好的文档,但它们在教程方面没有提供任何内容。

    通常我使用RAMDirectory并将其注入到我的lucene类中以对基本函数执行单元测试,例如向索引添加文档,或删除文档等,这很好,但它不允许我测试错误比如我上面列出的那些。

    我可以创建一个物理目录测试文件,创建测试目录,然后删除其中一个文件以实际损坏它,但有没有办法以模拟方式执行此操作而不必在磁盘上创建文件?< / p>

1 个答案:

答案 0 :(得分:4)

  1. 一个简单的示例测试是 https://github.com/apache/lucene-solr/blob/master/lucene/core/src/test/org/apache/lucene/TestDemo.java

  2. 我不知道'测试不运行'是什么意思:但是你绝对批评你使用记录的确切版本的junit来处理你的版本:

  3. 例如,对于3.5:

      

    取决于junit 4.7.x(不是4.6.x,而不是4.8.x)

    http://svn.apache.org/repos/asf/lucene/dev/branches/lucene_solr_3_5/lucene/README.txt

    Junit有时会破坏向后兼容性,这不是我们的错。

    对于模拟错误等更高级的东西,你将不得不查看代码或查看Lucene中的类似测试。例如。假冒磁盘已满错误,只需查看TestIndexWriterOnDiskFull即可查看它是如何做到的。