2013-07-23 4 views
1

필자는 있어야하는 기능을 제공하므로 클래스 N을 확장해야하는 클래스 C가 있습니다. C가 JUnit 테스트가되기를 바래서 TestCase를 확장하고 싶습니다. 테스트 실행기 인 Junit suite 객체를 사용하고 있기 때문에 TestCase 유형으로 테스트를 추가해야합니다. 이것은 TestCase 확장을 사용해야한다는 것을 의미합니다.Junit에서 TestCase를 확장하는 대신 테스트 구현 [Java]

그러나 Java는 다중 상속을 허용하지 않으므로 대신 인터페이스를 사용해야합니다. 기존 인터페이스가 있습니까? 아니면 TestCase에서 확장되지 않는 Junit 테스트를 동적으로 실행하는 방법이 있습니까?

+0

junit의 버전을 사용하고 계십니까? – radai

+0

JUnit4를 사용해야합니다. – Olaf

답변

1

나는 Test 또는 TestCase을 더 이상 확장하지 않습니다. 4.4 버전부터 @Test 개의 주석을 사용합니다.

+0

분명히 그는 새 주석 API를 사용하지 않고 있습니다 .-) –

+0

@ D.R : 전혀 눈치 채지 못했을 것입니다. – Keppil

+0

필자는 대답에 적응했습니다 ... 누군가가 단위 테스트에 대해 어떻게 알았는지 모르지만 수년간의 API 발전을 잠들었습니다.'* g *' –

0

인터페이스는 Test라고, 참조 : 그러나 http://junit.sourceforge.net/junit3.8.1/javadoc/junit/framework/Test.html

을의 JUnit의 최신 버전은 확실히 @Test 속성에 가서 YourTestClass.class

+0

이것은 내가 원하는 것일 수 있습니다. 새 Test (x), 새 Test (y) 등과 같은 작업을 수행하려고하므로 @Test가 작동하지 않습니다. 런타임에 테스트를 동적으로 생성하고 있습니다. 나는 구체적인 수업을 지정할 수 없다. –

+0

구체적인 클래스를 지정할 수 없다면 리플렉션을 통해 동적 클래스를 지정할 수 있습니다. –

1
를 통해 유형을 지정하여 스위트에 테스트 클래스를 추가한다에

N을 확장하려면 C 클래스가 정말로 필요합니까? 확장 대신 컴포지션을 선택할 수 있습니까? 귀하의 C는 내부 속성으로서 N을 가질 수 있고 그것에 의해 제공된 기능을 사용할 수 있습니다. 그냥 생각.

+0

무엇보다도 먼저 단위 테스트간에 상속을 피할 것입니다. – Olaf

+0

아니요, 나는 그들을 구성 할 수 없습니다. N은 메소드를 보호했고 N을 쓰지 않았기 때문에 C를 같은 패키지에 넣을 수 없습니다. –

관련 문제