java - 如何调试使用 dataproviders 的 testng 测试?

标签 java testng

我有一个 testng 测试方法,它使用 dataprovider 来获取测试输入。我只想在第二个测试数据输入运行测试时调试测试。我怎么做 ?我该如何设置断点?

这是一些示例代码。

@Test(dataProvider = "myDataProvider")
public void findStringInString(String input, String toFind, boolean found){
    Assert.assertEquals(finder(input, toFind), found, "Could not find " + toFind + " in " + input);
}

@DataProvider(name = "myDataProvider")
public static Object[][] stringSource()
{
    return new Object[][] {
        {"hello", "hell", true},
        {"nice", "iced", false},
        {etc...}
    };
}

PS - 顺便说一句,这段代码看起来像反模式还是不好的做法吗?

最佳答案

确定在哪里设置调试点的最简单方法是维护一个计数器,检查正在运行哪个数据提供程序迭代,然后当该值达到所需值时,执行调试打印语句并在该行中设置断点.

这是一个示例

import java.util.concurrent.atomic.AtomicInteger;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class SampleTestCase {

  private final AtomicInteger counter = new AtomicInteger(1);

  @Test(dataProvider = "getData")
  public void testMethod(String s) {
    if (counter.getAndIncrement() == 2) {
      System.err.println("Debug mode on"); //Set a breakpoint on this line
    }
    System.err.println("Hello " + s);

  }

  @DataProvider
  public Object[][] getData() {
    return new Object[][]{
        {"TestNG"},{"Spring"},{"Selenium"}
    };
  }

}

As an aside, does this code look like an anti-pattern or bad practice ?

我认为仅看骨架代码并不能说明很多事情。您共享的示例中几乎没有任何内容可供我们用来建议。

关于java - 如何调试使用 dataproviders 的 testng 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60196503/

相关文章:

java - 如何在 Selenium Webdriver 中模拟鼠标双击

java - 在一份 testNG 报告中显示多个测试套件的所有失败测试

Java ArrayList 获取方法

java - 测试 NG : turning a @BeforeClass into something else (@BeforeSuite maybe? )

java - 碧 Jade 报告 : JRException: Error retrieving field value from bean(Nested Bean Issue)

java - 如何在java中按日期/时间比较和排序列表?

java - 如何在@AfterMethod中将@Test标记为失败

java - 在 TestNG 中控制测试顺序的更简单方法?

java - Subversive 导致 Eclipse 不同步?

java - 将类实例映射到数字