Junit测试无法通过所有测试用例一次

时间:2013-10-17 15:26:45

标签: java junit

我有一个非常奇怪的问题,当我尝试使用多个测试用例运行JUnit测试时,它只会传递第一个测试用例并显示IndexOut of Bound错误

public class ABCTest {
    @Test
    public void basicTest1(){...}
    @Test
    public void basicTest2(){...}
    ...

但如果我赞扬其余的测试用例,请逐一测试它们,它将通过所有测试用例。

public class ABCTest {    
    @Test
    public void basicTest1(){...}
    //@Test
    //public void basicTest2(){...}
    //...

2 个答案:

答案 0 :(得分:7)

由于您没有提供完整的测试用例和实现类,我必须做出一些假设。

您最有可能通过测试用例改变测试对象的状态。

通常你会尝试为每个单元测试获得一个干净的测试夹具。这通过使用@Before注释的方法来创建被测试类的新实例。 (在旧版本的junit中,这被称为' setUp()'。

这确保了测试方法执行的顺序以及执行次数无关紧要,并且每种方法都是孤立的。

答案 1 :(得分:0)

查看您在测试用例中所做的事情,看看您是否正在更改其他测试用例可能使用的数据,而不是将其恢复到原始状态。例如,您有一个文本文件,您可以在basicTest1中读取和写入,然后在basicTest2中再次读取,但假设该文件与运行basicTest1之前的文件相同。

这只是一个可能的问题。需要查看代码以获得更多洞察力