1

我有一个非常奇怪的问题,当我尝试使用多个测试用例运行 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(){...}
    //...
4

2 回答 2

7

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

您很可能正在通过测试用例改变测试对象的状态。

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

这确保了测试方法执行的顺序以及执行次数无关紧要,并且每个方法都可以独立工作。

于 2013-10-17T15:30:22.197 回答
0

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

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

于 2013-10-17T15:30:14.793 回答