Ath*_*ban 19 java junit operating-system junit4
我正在使用JUnit4.
我在测试用例中有一组测试方法.
每个测试方法都插入一些记录并验证测试结果,最后删除插入的记录.
由于JUnit并行运行,因为在执行上一个测试方法期间存在一些记录,测试方法会失败.这只发生在我的同事机器(Windows 7)中,而不是在我的机器(Cent OS 6)中.
我们需要的是测试方法必须通过我们所有的机器.
我已经尝试清除Setup()方法中的记录,但它再次只能在我的机器上运行.JUnit中是否有任何选项可以使测试方法以统一的顺序运行?
谢谢,
Ran*_*ddy 25
MethodSorters是Junit 4.6发布后引入的新类.该类声明了三种类型的执行顺序,可以在执行它们时在测试用例中使用.
NAME_ASCENDING(MethodSorters.NAME_ASCENDING) - 按字典顺序按方法名称对测试方法进行排序.
JVM(null) - 按JVM返回的顺序保留测试方法.请注意,来自JVM的顺序因运行而异.
DEFAULT(MethodSorter.DEFAULT) - 以确定性但不可预测的顺序对测试方法进行排序.
.
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runners.MethodSorters;
//Running test cases in order of method names in ascending order
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class OrderedTestCasesExecution {
@Test
public void secondTest() {
System.out.println("Executing second test");
}
@Test
public void firstTest() {
System.out.println("Executing first test");
}
@Test
public void thirdTest() {
System.out.println("Executing third test");
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
Executing first test
Executing second test
Executing third test
Run Code Online (Sandbox Code Playgroud)
参考:http://howtodoinjava.com/2012/11/24/ordered-testcases-execution-in-junit-4/
JUnit无法保证测试顺序.
原因是单元测试是原子的 - 所有设置都应该在设置/拆除方法中进行,而不是通过其他测试进行.
考虑将插入数据的代码移动到另一个辅助类中,该类可以由插入的测试和需要验证的类调用,并在@Before方法中调用该类.
您还应该考虑一个模拟解决方案(例如Mockito),而不是直接命中数据库,如果可以的话 - 模拟将大大有助于确保您的测试很好并且孤立,并且,作为一个很好的附带好处,通常有助于指出你可以在哪里使用一些重构.
| 归档时间: |
|
| 查看次数: |
36947 次 |
| 最近记录: |