在测试之间传递 JUnit 数据
我刚刚发现,在创建一些CRUD测试时,您无法在一个测试中设置数据,然后在另一个测试中读取数据(数据在每个测试之间设置回其初始化)。
我所要做的就是(C)用一个测试来重构一个对象,然后(R)用下一个测试来调整它。JUnit有没有办法做到这一点,或者它是否在意识形态上编码,使得测试不允许相互依赖?
我刚刚发现,在创建一些CRUD测试时,您无法在一个测试中设置数据,然后在另一个测试中读取数据(数据在每个测试之间设置回其初始化)。
我所要做的就是(C)用一个测试来重构一个对象,然后(R)用下一个测试来调整它。JUnit有没有办法做到这一点,或者它是否在意识形态上编码,使得测试不允许相互依赖?
好吧,对于单元测试,你的目标应该是测试最小的孤立代码段,通常是逐种方法。测试用例也是如此,是另一个测试用例。但是,没有什么可以阻止您创建一个来同时测试这两个函数。但是,如果测试失败,测试在哪个代码单元失败?你不知道。这些测试更像是集成测试,应该区别对待。testCreate()
testRead()
testCreateAndRead()
如果真的想这样做,可以创建一个静态类变量来存储 由 创建的对象,然后在 中使用它。testCreate()
testRead()
由于我不知道你说的是哪个版本的Junit,所以我只拿起古老的Junit 3.8版本:
完全丑陋但有效:
public class Test extends TestCase{
static String stuff;
public void testCreate(){
stuff = "abc";
}
public void testRead(){
assertEquals(stuff, "abc");
}
}
JUnit提倡独立测试。一种选择是将两个逻辑测试放在一个@Test方法中。
TestNG的部分原因是为了允许测试之间的这种依赖关系。它强制执行测试依赖项的本地声明 - 它以有效的顺序运行测试,并且不运行依赖于失败测试的测试。有关示例,请参阅 http://testng.org/doc/documentation-main.html#dependent-methods。