Junit测试用例在2个测试用例后停止执行

时间:2016-04-18 14:22:04

标签: java hibernate unit-testing junit

enter image description here我在Spring + Hibernate框架中编写DBunit(DAO方法的junit)并使用Java8。 我在Test类中有很多测试用例,当单独运行时会成功。但是当我运行该特定类时,测试用例通过执行2个测试用例在第3个测试用例中停止执行。 我试着改组测试用例,它随机占用任何方法,在第三个测试用例时停止执行。

配置正确实现,在下面的代码片段中,它在testCMethod测试用例中失败。

public class ABCDAOTest extends Test case {


    @Override
    @Before
    public void setUp() throws Exception {
            super.setUp()
    }


    @Test
    public void testAMethod(){
        /*
            My test case
        */
    }

    @Test
    public void testBMethod(){
        /*
            My test case
        */
    }


    @Test
    public void testCMethod(){
        /*
            My test case
        */
    }


    @Test
    public void testDMethod(){
        /*
            My test case
        */
    }


    }

请提供您的意见。

1 个答案:

答案 0 :(得分:0)

要按特定顺序运行测试,您可以像这样完成

import org.junit.runners.MethodSorters;

import org.junit.FixMethodOrder;
import org.junit.Test;

@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class SampleTest {

    @Test
    public void firstTest() {
        System.out.println("first");
    }

    @Test
    public void secondTest() {
        System.out.println("second");
    }
}

记住MethodSorters是一个枚举,其他常量是

JVM - 按照JVM返回的顺序保留测试方法。请注意,JVM的顺序可能因运行而异。

DEFAULT - 以确定性但不可预测的顺序对测试方法进行排序。

并且在第二次测试之后没有运行测试,可能的原因可能是第三次测试运行可能由于无限循环而无法给出结果。 因此,我们还可以通过添加规则并使用Timeout来限制测试用例的运行时,如下所示

public class LongRunningTests {
@Rule
public Timeout globalTimeout = Timeout.seconds(5);
@Test
public void whatWeDoInATestMethodEchoesInEternity() {
while(true);
}
} 

希望这对你有用。