2010-03-18 7 views
7

자바 테스트에서 GUI 응용 프로그램을 2 번 실행하고 싶습니다. 이 경우 @annotation을 어떻게 사용해야합니까?junit annotation

public class Toto { 

    @BeforeClass 
    public static void setupOnce() { 
     final Thread thread = new Thread() { 
      public void run() { 
       //launch appli 
      } 
     }; 
     try { 
      thread.start(); 
     } catch (Exception ex) { } 
    } 
} 
public class Test extends toto { 
    @Test 
    public void test() { 
     setuptonce(); 
     closeAppli(); 
    } 

    @test 
    public void test2() 
    { 
     setuptonce(); 
    } 
} 

는 그것을 두 번째 시간을 시작하려면 어떤 주석 사용해야합니까? @afterclass?

답변

0

@BeforeClass 주석은 테스트가 실제로 실행되기 전에 한 번 실행하기 위해 사용됩니다.

그래서 뭘 원하는지 (이유)에 따라 주기적으로 실행 코드를 감싸고 다른 메소드에서 실행 코드를 옮기고 다른 곳에서 코드를 호출하거나 별도의 테스트 케이스를 작성할 수 있습니다.

+0

그래서 setuponce()를 호출하면 GUI가 한 번 실행됩니까? GUI를 닫은 후 어떻게 GUI를 다시 시작할 수 있습니까? @Test 출시 GUI 가까운 GUI 발사 GUI – user281070

+0

지금 알고 당신이하지 포크 않는 경우, 당신은 다음과 같이 쓸 수있다, GUI를 실행하지만,하지 않습니다 공공 무효 실행() { (인터넷 용을 전 = 0; i가 2 <; 내가 ++) { // 발사 GUI } } 가 종료하기 전에 포크 GUI에서 (즉, 반환 (실행 제어) 경우), 여기에 내가 가진 다른 물건 – dchekmarev

+0

해야한다 하나의 함수 toto.java 여기서 setupEnd()를 사용하여 @BeforeClass를 정의합니다. 또 다른 Java 테스트에서는 다음과 같은 I : -call setuponce() - @test // test1, close appli - @ test2 // test2, setup을 한 번 다시 호출하고 ressource를 닫습니다. test2가 완료되지 않았습니다 ... - – user281070

18

@BeforeClass이 주석 된 메소드는 테스트 메소드가 테스트 클래스에서 실행되기 전에 한 번 실행된다는 것을 의미합니다. @Before으로 주석 된 메소드는 클래스의 모든 테스트 메소드 전에 한 번 실행됩니다. 이들의 대응 물은 @AfterClass@After입니다.

아마 다음과 같은 것을 목표로 삼고있을 것입니다. 당신은 명시 적으로 시험 방법에 @BeforeClass 메소드를 호출 할 필요가 없습니다

@BeforeClass 
public static void setUpClass() { 
    // Initialize stuff once for ALL tests (run once) 
} 

@Before 
public void setUp() { 
    // Initialize stuff before every test (this is run twice in this example) 
} 

@Test 
public void test1() { /* Do assertions etc. */ } 

@Test 
public void test2() { /* Do assertions etc. */ } 

@AfterClass 
public static void tearDownClass() { 
    // Do something after ALL tests have been run (run once) 
} 

@After 
public void tearDown() { 
    // Do something after each test (run twice in this example) 
} 

는 JUnit을 당신을 위해 것을 않습니다.

+0

하나의 기능이 있습니다. toto.java 여기서 setuponce()로 @BeforeClass를 정의합니다. -call setuponce() - @test // test1, close appli - @ test2 // test2, 한 번 설정을 다시 호출하고 닫습니다. 을 ressource하지만 test2가 완료되지 않았습니다 ... – user281070

+0

원본 소스 코드에 테스트 소스 코드를 완전히 추가 할 수 있습니까? 문제를 이해하는 데 문제가 있습니다. – ponzao

+0

이 Toto.java입니다 : 공용 클래스 토토 { @BeforeClass 공공 정적 무효 setupOnce() { 최종 스레드 스레드 = 새 스레드() { 공공 무효 실행() { \t //하는 어플리 } 를 시작 }; try { thread.start(); } catch (예외 ex) { } } } 이것은 테스트입니다.자바 : 공용 클래스 테스트 연장 TOTO { \t @Test 공개 무효 시험() { \t setuptonce(); closeAppli(); } @test public void test2() { \t setuptonce(); \t } } – user281070