2011-04-11 2 views
1

의 내가 다음 TestNG를 테스트 클래스가 있다고 가정 해 봅시다 :TestNG 테스트 슈트에서 상속을 사용할 수 있습니까?

public class OwnTestLauncher { 
    @Test(dataProvider = "valid-provider") 
    public void validSintax(Collection<File> files) throws PlooException { 
     runFilesThroughCompiler(files); 
    } 

    @Test(dataProvider = "invalid-provider") 
    public void invalidSintax(Collection<File> files) throws PlooException { 
     runFilesThroughCompiler(files); 
    } 

     protected String someAlgoritmUsedByRunFilesThroughCompiler(...) { ... } 

     ... 
} 

을 그리고 난 다음 몇 가지 약간 다른 정장을 작성하고 싶습니다, 그래서 다른 ocasions에 그들의 각 하나를 실행할 수 있습니다

public class SomeOtherFlavour extends OwnTestLauncher { 
    @Override 
    protected String someAlgoritmUsedByRunFilesThroughCompiler(files) { ... } 
} 

위 코드를 실행 해 보았지만 작동하지 않았습니다. 또한 @Test으로 SomeOtherFlavour에 주석을 달았습니다. 그러나 도움이되지 않았습니다. 내가하려는 일을하는 것이 가능합니까?

+1

확실히 작동해야합니다. TestNG에게 SomeOtherFlavour를 실행하도록 지시하면 두 가지 테스트 방법이 표시됩니다. 당신은 다른 것을보고 있습니까? 더 나아가 @Test를 OwnTestLauncher 클래스에 넣을 수 있습니다. –

답변

0

someAlgoritmUsedByRunFilesThroughCompiler을 별도의 인터페이스 (또는 추상 클래스)로 추출해야하고 다른 구현 클래스를 작성해야합니다. OwnTestLauncher에서

public interface MyAlgorithm { 
    String someAlgoritmUsedByRunFilesThroughCompiler(...); 
} 

시험 방법은 다음 추가 매개 변수로이 인터페이스의 구현을 기대, 당신은 여전히 ​​적응하여 데이터 공급자를 사용할 수 있습니다.