【问题标题】:Multiple JUnit tests using FEST使用 FEST 进行多个 JUnit 测试
【发布时间】:2011-01-29 13:33:13
【问题描述】:

我编写了几个 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 在完成第一次测试后显示“Runs: 2/3”,但没有进一步进展,或显示任何错误。

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

【问题讨论】:

    标签: java swing junit junit4 fest


    【解决方案1】:

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

    注释掉testA,您将有一个良好的开端。执行此操作时,是否同时运行 testB 和 testC?

    尝试深入了解testA 并慢慢注释掉testA 下方的详细信息,直到您同时运行testA 和testB。完成此操作后,您至少知道在哪里问题出在哪里。

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

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

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

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

    祝你好运找到你的错误!

    【讨论】:

    • 感谢您的帮助。在注释掉所有其他方法并发现它每次仍然只运行第一个之后,我查看了 beforeClass() 和 before() 方法。我使用 FEST 的方式似乎有问题。我在 before() 方法中有 window = new FrameFixture(frame) ,而不是 beforeClass() 方法。更改后,它似乎工作正常。
    【解决方案2】:

    看来你的代码 sn-p 没问题。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-10
      • 2017-05-12
      • 2023-04-11
      • 2014-05-28
      • 2012-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多