【发布时间】:2011-01-18 05:17:20
【问题描述】:
我的目标是在每个测试方法之后清除()我的 javax.persistence.EntityManager。
这是一个测试类的例子:
public class Example
{
@Test(dataProvider = "sampleDataProvider")
public void testA(String parameter)
{
System.out.println(parameter);
}
@Test(dataProvider = "sampleDataProvider")
public void testB(String parameter)
{
System.out.println(parameter);
}
}
entityManager 在 dataProvider "sampleDataProvider" 中使用,通过查询 DB 中的测试数据,然后以这种格式编译:new Object[2][1]。请记住,数据的查询和编译都是在测试方法(使用@DataProvider 注释)实际运行之前完成的,我们实际上是在查询实体而不仅仅是字符串。
上面的测试类会这样运行:
testA("some queried entity 1")
testA("some queried entity 2")
testB("some queried entity 1")
testB("some queried entity 2")
我最初的解决方案是使用@AfterTest 注释来清除entityManager。但是,它会在testA 和testB 的第二次运行(或第二次测试实例)之前将"some queried entity 2" 从 entityManager 中分离出来,这会导致"some queried entity 2" 成员的读/写操作出现问题。
我的目标是在测试方法之后清除 entityManager,而不一定在测试方法的每个实例之后。
TestNG 是否可以知道接下来要运行哪个测试?这样,如果下一个测试是新测试,我可以轻松清除 entityManager。
还有其他建议吗?
【问题讨论】:
标签: java testng entitymanager