2

我编写了几个 JUnit 测试方法来测试我的 Java Swing GUI(使用FEST)。我的课程采用以下格式:

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() { ... }

}

当我在 Eclipse 中运行这个类时,它只运行 testA 测试,而不运行 testB 或 testC。如果我注释掉 testA,testB 就会运行 - 所以它似乎每次只运行第一个测试。

Eclipse 中的 JUnit 在完成第一次测试后显示“运行:2/3”,但没有进一步进展,或显示任何错误。

有什么我做错了吗?我正在使用 JUnit 4.8.1 和 FEST 1.2。

4

2 回答 2

3

我怀疑你有一个副作用testA是阻止代码testB运行。testA如果没有 和 中的细节,很难说发生了什么testB,但我可以给你一些一般性的指导。

注释掉你是一个好的开始testA。当你这样做时,两者都做testBtestC运行?

尝试深入testA研究并慢慢注释掉下面的细节,testA直到测试同时运行testAtestB. 完成此操作后,您至少知道问题出在哪里

例如,如果您的代码如下所示:

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

注释掉之后的所有内容doX(),看看会发生什么。如果可行,则取消注释doY()并查看会发生什么。如果它不起作用,那么深入研究doX()并开始注释掉并再次重新运行您的测试。

这应该可以帮助您查明问题所在的详细信息。如果您在弄清楚这一点时仍然感到困惑,请回来并围绕这些细节提出问题。

祝你好运找到你的错误!

于 2011-01-29T14:06:56.537 回答
0

似乎您的代码段还可以。

您可以检查每个 @Test 方法是否独立于其他方法,每个测试方法不应共享相同的上下文。确保@Before@After有正确的行为。

于 2011-01-29T13:52:38.363 回答