2010-03-18 20 views
7

Deseo iniciar la aplicación GUI 2 veces desde la prueba de Java. ¿Cómo debemos usar @annotation en este caso?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(); 
    } 
} 

Para iniciar una segunda vez, que la anotación se debe usar? @afterclass?

Respuesta

0

La anotación @BeforeClass se utiliza para ejecutar algo una vez, antes de que realmente se ejecute la prueba.

Por lo tanto, dependiendo de qué desea obtener (y por qué), simplemente puede ajustar el código de inicio en un ciclo, mover el código de inicio en otro método y llamarlo desde otro lugar o escribir un caso de prueba por separado.

+0

así que cuando llamo a setuponce(), ¿inicia la GUI una vez? ¿cómo podría reiniciar la GUI después de cerrarla? @test lanzamiento interfaz gráfica de usuario GUI cerca lanzamiento GUI – user281070

+0

No sé ahora hago que inicie interfaz gráfica de usuario, pero, si no se bifurca, se puede escribir algo como esto: public void run() { for (int i = 0; i <2; i ++) { // lanzamiento GUI } } si se bifurca (es decir, devuelve el control a ejecutar() de interfaz gráfica de usuario antes de que cierre), entonces aquí debería ser algunas otras cosas – dchekmarev

+0

tengo una función toto.java donde defino @BeforeClass con setuponce() otra prueba java donde I: -call setuponce() - @test // test1, cierre appli - @ test2 // test2, vuelva a llamar a la configuración una vez y cierre el recurso pero test2 no se hace ... - – user281070

18

El método anotado con @BeforeClass significa que se ejecuta una vez antes de ejecutar cualquiera de los métodos de prueba en la clase de prueba. El método anotado con @Before se ejecuta una vez antes de cada método de prueba en la clase. Las contrapartes para estos son @AfterClass y @After.

Probablemente esté buscando algo como lo siguiente.

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

No es necesario llamar explícitamente al método @BeforeClass en sus métodos de prueba, JUnit lo hace por usted.

+0

Tengo una función toto.java donde defino @BeforeClass con setuponce() otra prueba Java donde I: -call setuponce() - @test // test1, cierre la aplicación - @ test2 // test2, vuelva a llamar la configuración una vez y cierre ressource pero test2 no está hecho ... – user281070

+0

¿Sería posible para usted agregar su código fuente de prueba completamente en su publicación original? Tengo problemas para entender el problema. – ponzao

+0

esto es Toto.java: clase pública Toto { @BeforeClass pública setupOnce static void() { último hilo de rosca = new Thread() { public void run() {// \t lanzar apli } }; try { thread.start(); } catch (Excepción ex) { } \t } } esto es Prueba.java: extiende public class Test {toto \t @test prueba public void() { \t setuptonce(); closeAppli(); } @test public void test2() { \t setuptonce(); \t } } – user281070