Java 使用FEST的多个JUnit测试
我已经编写了几个JUnit测试方法来测试我的JavaSwingGUI(使用)。我的课程采用以下格式:Java 使用FEST的多个JUnit测试,java,swing,junit,junit4,fest,Java,Swing,Junit,Junit4,Fest,我已经编写了几个JUnit测试方法来测试我的JavaSwingGUI(使用)。我的课程采用以下格式: public class Tests { @BeforeClass public static void beforeClass() throws Exception { ... } @Before public void before() throws Exception { ... } @After public void after()
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。您的代码片段似乎还可以
您可以检查每个@Test方法是否独立于其他方法,每个测试方法不应共享相同的上下文。确保
之前和
之后的@行为正确。我怀疑您在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=newframefixture(frame),而不是beforeClass()方法。在改变这个之后,它似乎工作正常。