2009-10-10 5 views
27

@Before으로 표시된 방법으로 분해 한 몇 가지 공통 설정 코드가 있습니다. 그러나 모든 단일 테스트마다이 코드가 모두 실행될 필요는 없습니다. 특정 테스트 전에 @Before 메서드 만 실행되도록 표시하는 방법이 있습니까?JUnit : @ 일부 테스트 방법에 대해서만?

답변

28

셋업 코드가 필요없는 테스트를 별도의 테스트 클래스로 옮기십시오. 유지하는 데 도움이되는 테스트에 공통적 인 다른 코드가 있으면 도우미 클래스로 이동하십시오.

+4

+1 다른 말로하면 @Before의 동작을 원하지 않는다면 @Before를 사용하지 마십시오. –

+0

@Kirschstein :("처음부터 올바르게" –

3

TestNG을 사용하십시오. 테스트를 통해 세밀하게 제어 할 수 있습니다.

1

또한 JUnit에서 Assume을 통해 달성 할 수 있습니다. 그런 다음 @Before을 처리 할 메소드 이름을 확인할 수 있습니다.

public class MyTest { 
    @Rule 
    public TestName testName = new TestName(); 

    @Before 
    public void setUp() { 
     assumeTrue(testName.getMethodName().equals("myMethodName")); 
     // setup follows 
    } 
} 

확인 @Rule에 대한 자세한 통찰력에 대한 topic.

+0

사용하지 마십시오. (@ test.getMethodName(). equals ("myMethodName")) {return;} (공백을 용서하십시오.) – jMcK

+0

나는 솔직히 찾을 수 있습니다. before-after 함수를 필요로하는 테스트에서 직접 호출하고 Before와 After 주석을 제거하는 것처럼 "test-name-equals"아이디어는 무의미합니다. – aliteralmind

0

@Before에 대해 잘 모르겠지만, 최근에 @After 블록을 선택적으로 실행하기위한 전략이 생겼습니다. 구현은 간단합니다. 테스트 클래스의 일부로 일부 플래그가 기본값으로 설정되어 있습니다. @Before 클래스의 기본값으로 재설정됩니다. 내가 깃발에 특유한 일을해야하는 수업에서, 나는 그 깃발을에 넣었다. 나는 각기 다른 작업을하기 위해 깃발 값을 확인했다.