JUnit - stop it from exiting on finish?

前端 未结 4 646
旧巷少年郎
旧巷少年郎 2021-01-19 22:34

Quick JUnit question. I\'m running some unit tests that involve starting up the GUI and doing a load of stuff.

I would like to see the results after the test to conf

相关标签:
4条回答
  • 2021-01-19 23:02

    Due to the fact you require a GUI and user interaction during the execution of the test, this is a "functional" test rather than a "unit" test.

    You could write the results to a file at the end, this would have the added benefit that you could assert that the output is correct/present programatically at the end. If you really want to keep the test running, then you could insert an infinite loop at the end of your test:

    JUnit 3:

    public void tearDown() {
        while (true) { Thread.sleep(2000); };
    }
    

    JUnit 4:

    @After
    public void tearDown() {
        while (true) { Thread.sleep(2000); };
    }
    

    This will keep the JUnit thread running, but you will need to ensure that your GUI events are being handled in another thread.

    0 讨论(0)
  • 2021-01-19 23:12

    One possibility is that your JUnit test is executing a tearDown() method, perhaps in a base class, which shuts down the GUI. If so, you can override the tearDown() method in your JUnit test to prevent this behaviour. E.g.

    protected void tearDown()
    {
       //do nothing
    }
    
    0 讨论(0)
  • 2021-01-19 23:14

    How about using a countdownlatch which you count down.

    private static CountDownLatch countdown = new CountDownLatch(1);

    @AfterClass
    public static void tearDownClass() throws Exception {
        countdown.await();
    }
    

    Then somewhere else in your code you count down latch on event.

    countdown.countDown();
    

    When countdown.countDown() is called then countdown.await() will continue.

    0 讨论(0)
  • 2021-01-19 23:20

    In Eclipse: Run configurations... > Test > Keep JUnit running...

    0 讨论(0)
提交回复
热议问题