[java] 테스트 실행기 ‘JUnit 4’에서 발견 된 테스트가 없습니다.

내 Java 테스트는 Eclipse에서 잘 작동했습니다. 하지만 이제 실행 메뉴에서 테스트를 다시 시작하면 다음 메시지가 표시됩니다.

No tests found with test runner 'JUnit 4'

에서 .classpath파일 나는 모든이 jar파일을, 그리고 마지막에 있습니다 :

<classpathentry exported="true" kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

이 오류를 해결하고 테스트를 다시 실행하려면 어떻게해야합니까?



답변

이것은 나에게 일어난 일입니다. Eclipse를 다시 빌드하거나 다시 시작해도 도움이되지 않았습니다.

테스트 방법 중 하나의 이름을 “test …”(JUnit3 스타일)로 시작하여 해결 한 다음 모든 테스트를 찾았습니다. 이전의 이름으로 다시 이름을 변경했지만 여전히 작동합니다.


답변

이러한 오류가 발생하면 Eclipse가 혼란스러워 보입니다. Eclipse를 다시 시작하고 프로젝트를 새로 고치고 정리 한 다음 Eclipse에서 다시 빌드하고 다시 시도하십시오. 대부분의 경우 매력처럼 작동합니다.


답변

‘test’디렉토리의 컨텍스트 메뉴에서 ‘Build path’-> ‘Use as a source folder’를 선택합니다. Eclipse는 unitTests.java 파일을 소스 파일로 인식해야합니다. ‘build’디렉토리에 unitTests.class 파일이 없기 때문에 ‘No JUnit tests found’경고가 발생합니다.


답변

테스트 클래스가 “TestCase”를 확장하는지 확인하십시오. 그렇다면 해당 절을 제거하십시오. 클래스는 “TestCase”클래스에서 확장 할 필요가 없습니다. 내가 만난 대부분의 경우입니다.

public class MyTestCase extends TestCase{
  @Test
  public void checkSomething() {
    //...
  }
}
//Result> AssertionFailedError: No test Found in MyTestCase

TestCase를 따르는 것이 좋습니다.

public class MyTestCase {
  @Test
  public void checkSomething() {
    //...
  }
}
//Works fine


답변

나는 같은 문제에 직면했고 웹과 junit의 내부에서 나쁜 예를 디버깅했습니다. 기본적으로 Junit 4.x에 대한 몇 가지 예제가 보여 주듯이 클래스가 TestCase를 확장하도록 만들지 마십시오. 명명 규칙 테스트를 사용 하거나 주석이 필요한 경우 @RunWith (JUnit4.class)를 사용할 수 있습니다.

Assert 메서드에 액세스해야하는 경우 Assert를 확장하거나 정적 가져 오기를 사용합니다.

클래스가 TestCase를 확장하면 Junit 4 Runner를 사용하더라도 3으로 실행됩니다. 이는 초기화 코드에 감지가 있기 때문입니다.

JUnit3Builder 및 라인을 참조하십시오.

boolean isPre4Test(Class<?> testClass) {
    return junit.framework.TestCase.class.isAssignableFrom(testClass);
}

이것은 true를 반환하고 junit4 호환성 테스트가 시도되지 않습니다.


답변

추가 시도

이 같은 테스트 방법 위의 @Test

@Test
public void testParse()
{

}


답변

또 다른 가능한 해결책은 다음과 같습니다. 에디터 창이나 패키지 탐색기에서 테스트 클래스를 실행할 수 없었지만 Outline보기에서 클래스 이름을 마우스 오른쪽 버튼으로 클릭하고 Run As JUnit을 선택했습니다. 테스트는 효과가 있었어 … Go figure!