2012-03-24 14 views
2

lucene 프레임 워크에서 단위 테스트를하고 싶습니다. 그러나 솔직히 나는 어떻게 해야할지 잘 모릅니다. 내 테스트 중 를 실행하는 것을 허용하지 않습니다 LuceneTestCase 내 JUnit 테스트 클래스를 확장 MockDirectoryWrapper Lucene Unit Tests

  • 와 모의 디렉토리를 설정

    1. : I는 다음과 같은 작업의 가장 기본적인 알아낼 수없는 것
    2. 나는 파일 오류, lockeddirectory 오류 등을 시뮬레이트하고 싶다. 그러나 나는 이런 종류의 일을하기 위해 MockDirectoryWrapper를 사용하는 방법을 혼란스럽게 생각한다.

    일부 자습서 나 예제가있는 리소스는 유용 할 것입니다. Google은 Lucene 단위 테스트와 관련된 내용을 찾지 못했지만 Lucene의 웹 사이트에는 훌륭한 설명서가 있지만 자습서 측면에서는 아무 것도 제공하지 않습니다.

    일반적으로 RAMDirectory를 사용하여 색인에 문서를 추가하거나 문서 등을 제거하는 것과 같은 기본 기능에 대한 단위 테스트를 수행하기 위해 lucene 클래스에 주입합니다. 위대한 것이지만 테스트를 허용하지 않습니다. 위에 나열된 오류가 있습니다.

    실제 디렉토리 테스트 파일을 만들고 테스트 디렉토리를 만든 다음 파일 중 하나를 삭제하여 본질적으로 손상시킬 수는 있지만 디스크에 실제로 파일을 만들지 않고도 모의 작업을 수행 할 수있는 방법이 있습니까?

  • 답변

    4
    1. 간단한 예제 테스트는 당신이 '테스트 실행을 해달라고'가 무슨 뜻인지 잘 모릅니다 https://github.com/apache/lucene-solr/blob/master/lucene/core/src/test/org/apache/lucene/TestDemo.java

    2. 입니다 :하지만 절대적으로 중요 당신은 작업을 문서화의 JUnit의 정확한 버전을 사용하여 출시 : 예를 들어

    , 3.5 :

    드 의 JUnit는 4.7.x에 의해 좌우

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

    를 JUnit 때로는 이전 버전과의 호환성, 그없는 우리의 잘못을 나누기 (4.8.x하지, 4.6.x되지 않음).

    시뮬레이션 오류와 같은 고급 기능에 관한 한, Lucene에서 코드를 보거나 유사한 테스트를 봐야 할 것입니다. 예 : 디스크 전체 오류를 가짜로 만들려면 TestIndexWriterOnDiskFull을보고 어떻게하는지보십시오.

    +0

    문제점을 제공하는 jUnit의 버전 번호 여야합니다. 나는 그런 생각조차하지 못했다. 나는 일식을 사용하고 있으며 4.8과 함께 배송됩니다. 그래도 도움을 주셔서 다시 한번 감사드립니다. 그 샘플 테스트는 실제로 많은 도움이되었습니다. – ryandlf

    +0

    예, 그렇습니다. 나는 lucene의 다음 버전에서 우리가 4.10을 지원할 것이라고 생각한다 ... 문제는 모든 setUp()이 super.setUp()을 호출하고 tearDown()이 super.tearDown(), junit 4.8+는 그런 식으로 물건을 바꿉니다. 우리가 가지고있는 청취자는 이전에 didnt 한 이벤트를받습니다 ... more info here : https://issues.apache.org/jira/browse/LUCENE-3762 –

    관련 문제