Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Junit测试用例在2个测试用例之后停止执行_Java_Hibernate_Unit Testing_Junit - Fatal编程技术网

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

Java Junit测试用例在2个测试用例之后停止执行,java,hibernate,unit-testing,junit,Java,Hibernate,Unit Testing,Junit,我正在Spring+Hibernate框架中使用Java8编写DBunit(DAO方法的junit)。 我在测试类中有许多测试用例,当单独运行时,它们是成功的。但是当我运行那个特定的类时,测试用例通过执行2个测试用例在第3个测试用例停止执行。 我试着洗牌测试用例,它随机占用任何方法,在第三个测试用例时停止执行 public class ABCDAOTest extends Test case { @Override @Before public void setUp(

我正在Spring+Hibernate框架中使用Java8编写DBunit(DAO方法的junit)。 我在测试类中有许多测试用例,当单独运行时,它们是成功的。但是当我运行那个特定的类时,测试用例通过执行2个测试用例在第3个测试用例停止执行。 我试着洗牌测试用例,它随机占用任何方法,在第三个测试用例时停止执行

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
        */
    }


    }
配置实现正确,在下面的代码段中,它在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
        */
    }


    }

请提供查看您的输入。

要按您想要的特定顺序运行测试,可以这样做

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的顺序可能因运行而异

默认值-以确定但不可预测的顺序对测试方法进行排序

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

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

希望这对您有用。

这不是有效的Java语法,所以我不确定它是如何执行的。上面的代码片段是我制作的一个示例。在我的实际场景中,各个测试用例都正常运行。从语法上讲,它工作正常,但在执行两个测试用例并在第三个测试用例停止后失败。“扩展测试用例”不应该是必要的,假设您使用的是junit annotation basedIt。很明显,这不是您真正的代码-在显示它之前,您不会得到任何有用的答案。此外:“在TestCo方法测试案例中失败”是对你问题的一个非常糟糕的描述。考虑发布真正的错误消息,堆栈跟踪等等。你基本上告诉我们“我有一些代码在某种程度上是失败的”。你究竟希望我们如何帮助这样的输入?