내가 JUnit을이 같은 일을하고 싶습니다 테스트 :이 클래스를 확장하여 그래서상속 (또는 대체)
@Runwith(Parameterized.class)
public abstract class BaseTest {
protected abstract List<Object[]> extraParams();
protected abstract ClassUnderTest testObject;
@Parameters
public Collection<Object[]> data() {
List<Object> params = ...; // a standard set of tests
params.addAll(extraParams());
return params;
}
@Test
public doTest() {
// assert things about testObject
}
}
public class ConcreteTest extends BaseTest {
protected ClassUnderTest = new ConcreteClass(...);
protected List<Object[]) extraParams() {
List<Object> extraParams = ...; // tests specific to this concrete type
return extraParams;
}
}
즉, 내가 개체에 대한 표준 테스트의 무리에서 실행 테스트와 콘크리트 클래스에 지정된 몇 가지 추가 테스트가 포함됩니다.
그러나 jUnit은 @Parameters
메소드가 정적이어야합니다. 그 밖의 방법으로 표준 클래스 세트에 구체적인 클래스를 추가하는 것 외에 목표를 정돈 할 수 있습니까?
내가 지금까지 가지고 올 것 중에 최고는 않은 주석이 추상 클래스에 Collection<Object[]> standardParams()
, 서브 클래스는 방법을 포함 할 것을 요구해야하는 것입니다 ...
@Parameters
public Collection<Object[]> data() {
List<Object> params = standardParams();
params.addAll(...); // extra params
return params;
}
을하지만,이 ISN을 나는 서브 클래스의 작가에게 너무 많은 책임을 맡기 때문에 내가 원했던만큼 깔끔하지는 않다.
슬림 : 당신이 내 대답에 모습을 가질 수 있습니까? – developer
@ javaguy 미안하지만 시간이 좀 걸렸습니다. 주말이었습니다. – slim