2013-08-12 2 views
0

bigTest 및 smallTest라는 두 개의 JUnit 클래스가 있다고 가정 해보십시오. smallTest는 bigTest의 하위 클래스이며 둘 다 일부 테스트를 포함합니다. JUnit 테스트로 Eclipse에서 smallTest를 실행하려고하면 smallTest의 테스트 케이스가 실행되는 대신 두 클래스의 테스트 케이스가 실행됩니다. 이게 왜 그렇게? bigTest의 테스트 케이스를 호출하지 않고 smallTest의 테스트 케이스 만 실행하는 방법이 있습니까?Junit 실행 하위 클래스가 수퍼 클래스 테스트 케이스를 호출합니다.

+0

유용 답변을 위로 올리는 것이 좋습니다 – AlexWien

+0

유사한 질문에 대한 몇 가지 대안이 있습니다. http://stackoverflow.com/questions/2207070/junit-ignore-test-methods-from-base-class – EGHM

답변

1

하나의 테스트를 다른 테스트에서 파생하면 (나쁜 습관이라고 생각합니다) 파생 클래스는 모든 메소드를 상속받습니다.
JunitRunner는 "test"로 시작하는 모든 메소드를 검색하고 부모 클래스와 하위 클래스의 메소드를 찾습니다.

+0

그런 다음 방법이 있습니까? 몇 가지 일반적인 방법을 공유하면서 두 테스트를 독립적으로 실행할 수 있습니까? 예를 들어 2 가지 테스트는 서로 다른 테스트를하지만 공통 API 집합을 사용합니까? 덕분에 – turtlesoup

+0

Tools.java라는 additonal helper 클래스를 만들고 거기에 공유 코드를 넣으십시오. 하지만 그 끝에 Helpclass를 "Test.java"라고 부르지 마십시오. – AlexWien

+0

추상 코드를 테스트 케이스 클래스에 넣을 수 있습니다. –

1

하위 클래스는 상위의 테스트 메소드를 상속하므로 모든 테스트가 실행됩니다. 당신이 작은 테스트를 실행할 때, 메소드가있는 곳을 그냥 뒤집어서 (기본 클래스를 smallTest로 만들고 하위 클래스를 bigTest로 만든다.) 메소드 만 실행한다.

관련 문제