Java Junit测试用例在2个测试用例之后停止执行
我正在Spring+Hibernate框架中使用Java8编写DBunit(DAO方法的junit)。 我在测试类中有许多测试用例,当单独运行时,它们是成功的。但是当我运行那个特定的类时,测试用例通过执行2个测试用例在第3个测试用例停止执行。 我试着洗牌测试用例,它随机占用任何方法,在第三个测试用例时停止执行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(
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方法测试案例中失败”是对你问题的一个非常糟糕的描述。考虑发布真正的错误消息,堆栈跟踪等等。你基本上告诉我们“我有一些代码在某种程度上是失败的”。你究竟希望我们如何帮助这样的输入?