Как отлаживать тестовые тесты, которые используют провайдеры данных? - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть тестовый метод testng, который использует провайдер данных для получения входных данных теста. Я хочу отлаживать тест только тогда, когда тест выполняется для 2-го ввода данных теста. Как я могу это сделать ? Как мне установить точку останова?

Вот пример кода.

@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 - Кстати, этот код выглядит как анти-паттерн или плохая практика?

1 Ответ

1 голос
/ 13 февраля 2020

Самый простой способ определить, где установить точку отладки, - это сохранить счетчик, который проверяет, какая итерация поставщика данных выполняется, а затем, когда значение достигает желаемого значения, выполнить оператор печати отладки и установить точку останова в этой строке. .

Вот пример

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"}
    };
  }

}

Кстати, этот код выглядит как анти-паттерн или плохая практика?

Не знаю думаю, что многое можно сказать, просто посмотрев на скелетный код. В образце, которым вы поделились, вряд ли есть что-то, что мы могли бы предложить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...