将一个测试方法的输出传递给另一个方法testng

时间:2010-06-25 05:45:14

标签: java testng

我必须在testng中编写以下单元测试用例:

  1. saveProductTest,如果产品详细信息在DB中成功保存,将返回productId。

  2. modifyProductTest,它应该使用以前保存的productId作为参数。

  3. 我正在使用testNg数据提供程序从XML文件中获取saveProductTest和modifyProductTest方法的产品详细信息输入(PrdouctName,ReleaseDate)。因为productId是在save方法中生成的,所以我必须将它传递给modify方法。

    将一个测试方法的输出传递给testng中的另一个方法的最佳方法是什么。

3 个答案:

答案 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并从两个测试中调用它。