سؤال

I've written several JUnit test methods to test my Java Swing GUI (using FEST). My class is in the following format:

public class Tests
{

    @BeforeClass
    public static void beforeClass() throws Exception { ... }

    @Before
    public void before() throws Exception { ... }

    @After
    public void after() throws Exception { ... }

    @AfterClass
    public static void afterClass() throws Exception { ... }

    @Test
    public void testA() { ... }

    @Test
    public void testB() { ... }

    @Test
    public void testC() { ... }

}

When I run this class in Eclipse, it only runs the testA test, and not testB or testC. If I comment out testA, testB runs - so it seems to just run the first test each time.

JUnit in Eclipse shows 'Runs: 2/3' after it has completed the first test, but doesn't progress any further, or show any errors.

Is there something I'm doing wrong? I'm using JUnit 4.8.1 and FEST 1.2.

هل كانت مفيدة؟

المحلول

I suspect that you have a side effect in testA that is blocking the code in testB from running. It's hard to say what is happening without the details in testA and testB, but I can give you some general guidance.

You are off to a good start by commenting out testA. When you do this, do both testB and testC run?

Try drilling down into testA and slowly commenting out the details in what's underneath testA until you tests run both testA and testB. Once you've done this, you at least know where the problem is.

For example, if you code looks something like:

public void testA() {
    doX();
    doY();
    doZ();
    // Assert stuff
    ...
 }

comment out everything after doX() and see what happens. If that works, then uncomment doY() and see what happens. If it didn't work, then drill down into doX() and start commenting out and re-running your tests again.

This should help you to pinpoint the details of where things are going wrong. If you are still stumped when you figure this out, come back and ask a question around those details.

Good luck finding your bug!

نصائح أخرى

Seems your code snippet is OK.

You may check if each @Test method is independent to others, each test method shouldn't share same context. Ensure @Before and @After have correct behaviors.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top