2012-08-29 3 views
2

@Test 주석이있는 인터페이스에서 메소드를 선언하고이를 구체적인 클래스에서 사용할 수 있습니까? 내 문제는 인터페이스를 구현하는 클래스에 @Test가 아닌 @Override 주석이 있다는 것입니다. 솔루션이 있습니까? 아니면 부모 클래스를 사용해야합니까?인터페이스에서 jUnit 테스트 메소드 추출하기

+1

구현 클래스에서'@ Override'와'@ Test'를 모두 사용할 수 있습니다 - 이것이 문제입니까? – assylias

+0

그러나 인터페이스에서'@ Test'를 사용하고 구체적인 클래스에서 인터페이스를 구현하면 Eclipse는'@ Override'를 사용하고 jUnit은'@ Test' 주석을 자동으로 인식하지 못합니다. 구체적인 클래스에서 수동으로 추가하지 않고'@ Test' 주석을 얻고 싶습니다. – Janus

+1

테스트 클래스에 인터페이스를 사용하는 이유는 무엇입니까? 이것은 매우 드문 경우입니다. –

답변

1

interface 대신 abstract class을 사용하십시오.
당신은 우리가 얻을 @Test
1)

public interface ITest { 
    @Test 
    public void simpleTest(); 
} 

public class SimpleTest implements ITest 
{ 
    @Override 
    public void simpleTest() 
    { 
     Assert.assertTrue(true); 
    } 
} 

주석과 absctract class의 메소드를 표시 할 수 있습니다

Tests in error: 
    initializationError(com.company.tester.SimpleTest) 

2)

public interface ITest { 

    public void simpleTest(); 
} 

public class SimpleTest implements ITest 
{ 

    @Test 
    @Override 
    public void simpleTest() 
    { 
     Assert.assertTrue(true); 
    } 
} 

모든 하시다 잘 rks, 시험은 통과된다!

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0 

3) 추상 클래스

public abstract class ATest { 

    @Test 
    public abstract void simpleTest(); 
} 

public class SimpleTest extends ATest 
{ 
    @Override 
    public void simpleTest() 
    { 
     Assert.assertTrue(true); 
    } 
} 

public class SecondTest extends ATest 
{ 
    @Override 
    public void simpleTest() 
    { 
     Assert.assertFalse(false); 
    } 
} 

시험을 잘 통과!

Tests run: 2, Failures: 0, Errors: 0, Skipped: 0 
관련 문제