복붙노트

[SPRING] JUnit 테스트에 java.lang.Exception이있는 initializationError가 있습니다. 일치하는 테스트가 없습니다.

SPRING

JUnit 테스트에 java.lang.Exception이있는 initializationError가 있습니다. 일치하는 테스트가 없습니다.

JUnit 테스트를 실행할 때 initializationError가 발생했습니다. 일치하는 테스트가 없습니다. 이렇게 :

prodapi-main-junit
initializationError(org.junit.runner.manipulation.Filter)
java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=testCreateSite], {ExactMatcher:fDisplayName=testCreateSite(com.company.product.api.web.rest.HostControllerTest)], {LeadingIdentifierMatcher:fClassName=com.company.product.api.web.rest.HostControllerTest,fLeadingIdentifier=testCreateSite]] from org.junit.internal.requests.ClassRequest@3c0f93f1
    at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:40)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createFilteredTest(JUnit4TestLoader.java:77)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:68)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

테스트 코드는 다음과 같습니다.

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = ProductApplication.class)
@WebAppConfiguration
public class HostControllerTest{
    @Test
    public void testCreateSite() throws Exception {
    ......
}
}

잘 실행되는 클래스를로드하는 것이 좋을 것입니다. 이 모듈과 비슷한 다른 모듈이 있으며, 정상적으로 실행할 수 있습니다.

가능한 원인을 확인했습니다.

나는 가능한 다른 것들이 이런 식으로 Junit 테스트 오류를 ​​얻을 수 있는지 여부를 모르겠습니다. 어쩌면 클래스 로더를 확인해야할까요?

해결법

  1. ==============================

    1.몇 가지 대답을 봤어. 나는이 사건에 대해 아래에서 이야기하는 문제가 있음을 발견했다. https://github.com/junit-team/junit4/issues/1277 (FilterRequest는 테스트의 실제 실패 원인 (예외)를 숨길 수 있음) 시도한 단계는 다음과 같습니다. 1. 테스트 탭에서 "선택한 프로젝트에서 모든 테스트 실행"옵션을 선택하고 테스트 기능 만 선택하지 말고 Junit 프로젝트 이름을 선택하십시오  실행 -> "실행 (디버그) 구성"을 클릭 한 후 2. 다음과 같이 오류의 세부 사항을 확인할 수 있습니다.

    몇 가지 대답을 봤어. 나는이 사건에 대해 아래에서 이야기하는 문제가 있음을 발견했다. https://github.com/junit-team/junit4/issues/1277 (FilterRequest는 테스트의 실제 실패 원인 (예외)를 숨길 수 있음) 시도한 단계는 다음과 같습니다. 1. 테스트 탭에서 "선택한 프로젝트에서 모든 테스트 실행"옵션을 선택하고 테스트 기능 만 선택하지 말고 Junit 프로젝트 이름을 선택하십시오  실행 -> "실행 (디버그) 구성"을 클릭 한 후 2. 다음과 같이 오류의 세부 사항을 확인할 수 있습니다.

    initializationError(com.company.product.api.web.rest.HostControllerTest)
    java.lang.Exception: Method testSetDBConfiguration should have no parameters
        at org.junit.runners.model.FrameworkMethod.validatePublicVoidNoArg(FrameworkMethod.java:76)
        at org.junit.runners.ParentRunner.validatePublicVoidNoArgMethods(ParentRunner.java:155)
    

    위의 식에 의해 주어진 세부 사항에 따라, 나는 그 함수의 인수를 제거했다. initializedError는 사라졌다.

    따라서 새로운 추가 된 테스트 기능으로 인해 불필요한 입력 인수가 생겨이 문제가 발생합니다. 잘못된 코드 :

    @Test
    public void testSetDBConfiguration(String name) throws Exception {
    

    로 변경

    @Test
    public void testSetDBConfiguration() throws Exception {
    
  2. from https://stackoverflow.com/questions/47710837/junit-testing-got-initializationerror-with-java-lang-exception-no-tests-found-m by cc-by-sa and MIT license