2012-03-24 3 views
2

私はluceneフレームワークでいくつかのユニットテストをしたいと思っていますが、正直言って私はそれについてどう考えているのかわかりません。私のテストのいずれかが を実行することはできませんLuceneTestCaseと私のJUnitテストクラスの拡張MockDirectoryWrapper Luceneユニットテスト

  • でモックディレクトリを設定

    1. :私は、次のようなタスクの最も基本的なを見つけ出すように見えることはできません
    2. 私は破損したファイルのエラー、lockeddirectoryエラーなどをシミュレートしたいですが、私はMockDirectoryWrapperを使ってこれらのことをする方法を混同しています。

    いくつかのチュートリアルや例があるリソースは素晴らしいでしょう。 GoogleはLucene単体テストに関連するものは見つけられていないようだが、Luceneのウェブサイトは素晴らしい文書を持っているが、チュートリアルでは何も提示していない。

    通常、私はRAMDirectoryを使用して、それを私のluceneクラスに注入して、インデックスにドキュメントを追加するか、ドキュメントなどを削除するなどの基本的な機能をユニットテストしますが、これは素晴らしいですが、上記のようなエラー。

    私は物理ディレクトリテストファイルを作成し、テストディレクトリを作成し、ファイルの1つを削除して実際に破損させることができますが、実際にディスク上にファイルを作成する必要はありません。

  • 答えて

    4
    1. 簡単な例のテストは、私はあなたが「テストを実行いけない」で何を意味するか知らない https://github.com/apache/lucene-solr/blob/master/lucene/core/src/test/org/apache/lucene/TestDemo.java

    2. ですが、その絶対的に重要なあなたで動作するように文書化されているのJUnitの正確なバージョンを使用しますリリース:たとえば

    、3.5用:

    デJUnitのは時々互換性、そのない私たちのせいに後方壊す

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

    (4.8.x、4.6.xのではないではない)のJUnit 4.7.xに保留します。

    エラーをシミュレートするなどの高度な機能については、コードを見たり、Luceneの同様のテストを参照する必要があります。例えば。ディスクの完全なエラーを偽装するには、TestIndexWriterOnDiskFullを見て、どのように動作するかを確認してください。

    +0

    問題を引き起こしているjUnitのバージョン番号でなければなりません。私はそれを考えなかった。私はeclipseを使っていて、それは4.8で出荷されています。しかし、助けをもう一度ありがとう。そのサンプルテストは本当に助けになりました。 – ryandlf

    +0

    そうだね。私はluceneの次のバージョンでは4.10をサポートすると思います...問題は、setUp()がsuper.setUp()とtearDown()を呼び出すことを保証する基本テストクラスの小さなステートマシンをsuper.tearDown ()とjunit 4.8+は、そうしたやり方で物事を変えます。私たちが持っているリスナーは、以前はやっていなかった出来事を受け取ります...もっと詳しくは:https://issues.apache.org/jira/browse/LUCENE-3762 –