2010-03-04 7 views
2

저는 JUnit으로 시작하고 주석 @Test@BeforeClass을 이해하지 못합니다.
나는 다음과 같은 코드가 있습니다@Test & @BeforeClass를 이해하는 방법?

public class Toto { 
@BeforeClass 
    public static void setupOnce() { 
     final Thread thread = new Thread() { 
      public void run() { 
       Main.main(new String[]{"-arg1", "arg2"}); 
      } 
     }; 
     try { 
      thread.start(); 
     } catch (Exception ex) { 
     } 
    } 

@BeforeClass를? 그리고이 경우에 setupOnce()과 스레드는 무엇입니까?
각 Java 테스트 전에 @Test을 추가해야합니까?
30 개의 Java 테스트가있는 경우 각 Java 파일에 @Test public void test()이 있어야합니까?

+1

왜? 나는 질문 할 권리가 없다. – user281070

+0

당신은 우리가 시간과 노력을 들여 귀하의 질문에 답하는 것을 기대하지 않습니다. 당신이 지금 당장 유용한 대답을 읽고 받아 들일 수 없다면 .. – Tim

답변

16

@BeforeClass 주석은이 구현 단위에 포함 된 테스트 케이스보다 먼저 실행되어야하는 메소드를 식별합니다. 이 특별한 경우에이 테스트 클래스에는 테스트 중에 백그라운드에서 실행해야하는 스레드 된 리소스의 초기화가 포함되어 있습니다.

  • @BeforeClass : 클래스에서 다른 시험 excuted되기 전에

    JUnit을 네 라이프 사이클 이벤트를 정의합니다.

  • @Before : ONE 테스트가 실행되기 전에 직접 실행됩니다. @Test 주석이 지정된 메소드에 대해 정확히 한 번만 호출됩니다.
  • @Test : 테스트 자체에서 애플리케이션에 이러한 방식으로 주석을 추가 한 메서드가 여러 개있을 수 있습니다.
  • @After : 테스트가 실행 된 후 오류 또는 실패와 관계없이. @Test 주석이 달린 메서드에 대해 하나의 실행이 여러 번 실행됩니다.
  • @AfterClass :이 클래스의 모든 테스트가 실행 된 후 정말 비싼 심지어 전체 시험을 한 번만 실행하는 동안, 내 응용 프로그램에서

나는 일반적으로 방법을 어노테이션 @BeforeClass를 사용하여 고가의 초기화를 실행 전체 스위트. 그러나이 "이벤트"는 내 발달을 가속화하는 해킹을 기반으로합니다.

+0

1) 고맙습니다. 지금은 분명하지만, 실은 어떨까요? 2)이 경우 각 Java 테스트에서 @Test를 추가해야합니까? 3) 함수에서 모든 annotions를 재 그룹화하고 각 Java 테스트에서 호출하는 것이 있습니까? – user281070

+0

코드 스 니펫에서 그 백그라운드 스레드 내에서 어떤 일이 발생하는지 분명하지 않습니다. 그러나 나는이 구조를 사용하여 갈래로 갈 자원 같은 서버가 있다고 생각한다. 하지만 일반적으로이 스레드에 합류하는 일부 @AfterClass 작업을 기대합니다. 이 코드에서 –

+0

은 GUI 응용 프로그램을 실행하는 것이지만 왜이 방법을 사용합니까? – user281070

관련 문제