我必须在testng中编写以下单元测试用例:
saveProductTest,如果产品详细信息在DB中成功保存,将返回productId。
modifyProductTest,它应该使用以前保存的productId作为参数。
我正在使用testNg数据提供程序从XML文件中获取saveProductTest和modifyProductTest方法的产品详细信息输入(PrdouctName,ReleaseDate)。因为productId是在save方法中生成的,所以我必须将它传递给modify方法。
将一个测试方法的输出传递给testng中的另一个方法的最佳方法是什么。
答案 0 :(得分:18)
对simendsjo充分尊重,所有测试应该相互独立的事实是一种教条式的方法,有很多例外。
回到原始问题:1)使用依赖方法和2)将中间结果存储在字段中(TestNG不会从头开始重新创建实例,因此该字段将保留其值)。
例如
private int mResult;
@Test
public void f1() {
mResult = ...
}
@Test(dependsOnMethods = "f1")
public void f2() {
// use mResult
}
答案 1 :(得分:7)
使用ITestContext
对象。它是套件上下文中全局可用的对象,并且可通过每个@Test中的参数进行说明。
例如:
@Test
public void test1(ITestContext context, Method method) throws Exception {
// ...
context.setAttribute(Constantes.LISTA_PEDIDOS, listPaisPedidos);
// ...
}
@Test
public void test2(ITestContext context, Method method) throws Exception {
List<PaisPedido> listPaisPedido = (List<PaisPedido>)
context.getAttribute(Constantes.LISTA_PEDIDOS);
// ...
}
答案 2 :(得分:3)
每个单元测试应独立于其他测试,以便您更容易看到失败的原因。你可以有一个帮助方法来保存产品并返回id并从两个测试中调用它。