JUnit 3에서는 다음 코드를 사용하여 테스트 스위트 내의 모든 테스트를 얻을 수 있습니다.
TestSuite allTestsSuite = (TestSuite) AllTests.suite()
Enumeration enumeration = allTestsSuite.tests();
ArrayList listOfTests = Collection.list(enumeration);
그러나 JUnit 4에서는 이와 동등한 방법을 찾을 수 없습니다. 클래스에는 더 이상 .suite()
메서드 가 없습니다 . 그들은 단순히 @Suite
주석을 사용합니다 . Suite 클래스에 더 이상 tests()
메서드 가 없다는 점을 제외하고는 문제가되지 않습니다 . 거기이다 children()
방법,하지만 반환 내가 찾는 이유보다는 뭔가 다른 것 같다 주자의 목록.
그렇다면 JUnit 3에서와 같이 JUnit 4의 테스트 스위트 내에서 테스트를 얻으려면 어떻게해야합니까?
약간의 실험 끝에 다음 솔루션을 발견했습니다.
SuiteClasses suiteClassesAnnotation = AllTests.class.getAnnotation(SuiteClasses.class);
if (suiteClassesAnnotation == null)
throw new NullPointerException("This class isn't annotated with @SuiteClasses");
Class<?>[] classesInSuite = suiteClassesAnnotation.value();
기본적으로 JUnit 자체가 가져 오는 것과 같은 방식으로 클래스를 가져옵니다. 주석을 살펴보고 그 안에 포함 된 값을 결정합니다.
dkatzel에서 제공하는 범주 솔루션은 궁극적으로 이러한 클래스를 필터링하려는 경우에도 좋은 옵션이지만 코드 분석과 같은 다른 목적을 위해 제품군의 클래스 목록이 필요한 경우 가장 간단하고 직접적인 방법입니다. 그것을하기 위하여.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다