2010-03-18 37 views
7

Tôi muốn khởi chạy ứng dụng GUI 2 lần từ thử nghiệm Java. Chúng ta nên sử dụng @annotation trong trường hợp này như thế nào?Chú thích junit

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(); 
    } 
} 

Để khởi động nó lần thứ hai, trong đó chú thích tôi nên sử dụng? @afterclass?

Trả lời

0

Chú thích @BeforeClass được sử dụng để chạy một cái gì đó một lần, trước khi thử nghiệm thực sự chạy.

Vì vậy, tùy thuộc vào những gì bạn muốn nhận được (và tại sao), bạn chỉ có thể gói mã khởi động trong một chu kỳ, di chuyển mã khởi động trong phương pháp khác và gọi nó từ một nơi khác hoặc viết test riêng biệt.

+0

vì vậy khi tôi gọi setuponce(), nó khởi chạy GUI một lần? làm thế nào tôi có thể khởi chạy lại GUI sau khi đóng nó? @test ra mắt giao diện gần GUI ra mắt giao diện – user281070

+0

Tôi không biết bây giờ làm bạn khởi động gui, nhưng nếu nó không dĩa, bạn có thể viết một cái gì đó như thế này: public void run() { for (int i = 0; i <2; i ++) { // khởi chạy gui } } nếu nó nhánh (tức là trả về điều khiển để chạy() từ gui trước khi đóng), thì đây là một số thứ khác – dchekmarev

+0

Tôi có một hàm toto.java nơi tôi định nghĩa @BeforeClass với setuponce() một thử nghiệm java khác nơi tôi: -call setuponce() - @test // test1, đóng appli - @ test2 // test2, thiết lập lại cuộc gọi một lần và đóng nguồn nhưng test2 chưa xong ... - – user281070

18

Phương thức được chú thích với @BeforeClass có nghĩa là nó được chạy một lần trước khi bất kỳ phương pháp thử nghiệm nào được chạy trong lớp thử nghiệm. Phương pháp được chú thích với @Before được chạy một lần trước mỗi phương pháp thử nghiệm trong lớp học. Các đối tác của chúng là @AfterClass@After.

Có thể bạn đang nhắm đến một thứ như sau.

@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) 
} 

Bạn không cần gọi rõ ràng phương thức @BeforeClass trong phương pháp thử của mình, JUnit thực hiện điều đó cho bạn.

+0

Tôi có một chức năng toto.java nơi tôi xác định @BeforeClass với setuponce() một thử nghiệm java khác nơi tôi: -call setuponce() - @test // test1, đóng appli - @ test2 // test2, thiết lập lại cuộc gọi một lần và đóng ressource nhưng test2 không được thực hiện ... – user281070

+0

Bạn có thể thêm mã nguồn thử nghiệm của mình hoàn toàn vào bài đăng gốc không? Tôi gặp sự cố khi hiểu sự cố. – ponzao

+0

đây là Toto.java: public class Toto { @BeforeClass public static void setupOnce() { thức Chủ đề thread = new Thread() { public void run() { \t // khởi Appli } }; thử { thread.start(); } bắt (Ngoại lệ cũ) { } \t } } đây là Kiểm tra.java: public class Test kéo dài toto { \t @Test public void test() { \t setuptonce(); closeAppli(); } @test khoảng trống công khai test2() { \t setuptonce(); \t } } – user281070