9

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

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

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

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

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

4

3 回答 3

23

尽管对 simendsjo 给予了应有的尊重,但所有测试都应该相互独立的事实是一种教条主义的方法,有很多例外。

回到最初的问题:1)使用依赖方法和 2)将中间结果存储在一个字段中(TestNG 不会从头开始重新创建您的实例,因此该字段将保留其值)。

例如

private int mResult;

@Test
public void f1() {
  mResult = ...
}

@Test(dependsOnMethods = "f1")
public void f2() {
  // use mResult
}
于 2010-06-25T21:05:17.157 回答
11

ITestContext对象。它是一个在 Suite 上下文中全局可用的对象,并且可以通过每个 @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);
    // ...
}
于 2015-01-16T11:30:34.887 回答
3

每个单元测试都应该独立于其他测试,这样你就可以更容易地看到失败的地方。您可以使用辅助方法保存产品并返回 id 并从两个测试中调用它。

于 2010-06-25T06:11:27.413 回答