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

我必须在testng中编写以下unit testing用例:

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

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

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

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

尽管对simendsjo充满敬意,但所有测试应该彼此独立的事实是一种教条式的方法,有很多例外。

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

例如

private int mResult; @Test public void f1() { mResult = ... } @Test(dependsOnMethods = "f1") public void f2() { // use mResult } 

使用ITestContext对象。 它是Suite上下文中全局可用的对象,并且每个@Test中的参数都是disponible。

例如:

 @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 listPaisPedido = (List) context.getAttribute(Constantes.LISTA_PEDIDOS); // ... } 

每个unit testing应独立于其他测试,以便您更容易看到失败的原因。 您可以使用辅助方法保存产品并返回id并从两个测试中调用它。