Можно ли интегрировать Jbehave с testNG?

В настоящее время мы используем TDD и планируем перейти на BDD с помощью Jbehave. Я только что сделал поиск в Google и не смог найти ни одного сайта для testNG с Jbehave. Я только что прошел официальный сайт Jbehave, где понял, что возможно интегрировать библиотеку jbehave с любым типом инструментов модульного тестирования, таких как TestNg, Junit. Но я не нашел пример кода, как на самом деле это сделать. Я ожидаю следующих шагов от некоторых экспертов:

  1. Как создать простой файл Java с Jbehave+TestNG.
  2. Можно ли использовать все возможности TestNG после того, как я реализовал с помощью Jbehave (например, аннотации. BeforeClass, afterClass, BeforeSuite, AfterSuite)

  3. Как запустить файл / класс объектов Jbehave через файл TestNG.xml.

  4. Как интегрировать пользовательский протокол испытаний в Jbehave?

Я действительно не ожидаю никакого практического примера или рабочего кода. Я просто хочу понять обзорную поездку и некоторые материалы для достижения этой задачи.

Это действительно полезно, если кто-то поделится ссылкой и очень простым кодом, который прояснит мне это.

До сих пор я пробовал следующие вещи:

Файл функции:

Scenario: Check the google search engine
Given : Open the google home page www.google.com
When : Enter test automation in search box
Then : Proper result should be displayed in results page

Файл класса тестового шага:

public class GoogleSearchEngine_Steps {

    public static WebDriver driver;

    @Given("Open the google home page $url")
    public static void openUrl(String url) throws Exception {
        try {

            driver = new FirefoxDriver();
            driver.get(url);

        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    @When("Enter $searchKeyword in search box")
    public static void searchKeyword(String searchKeyword) throws Exception {
        try {

            driver.findElement(By.xpath(".//*[@id='gs_htif0']")).sendKeys(searchKeyword);
            driver.findElement(By.xpath(".//*[@id='tsf']/input[1]")).click();

        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    @Then("Proper result should be displayed in results page")
    public static void result() throws Exception {
        try {

            driver.quit();

        } catch (Exception ex) {
            ex.printStackTrace();
        }

    }

Но застрял, чтобы создать файл класса тестового бегуна с помощью TestNg. Я не уверен, как начать.

Может кто-нибудь помочь мне создать файл класса тестового бегуна, который будет выполнять приведенный выше код.

Я читаю некоторые материалы, но у меня нет достаточно времени, чтобы прочитать все и реализовать их. Было бы очень благодарно, если бы кто-нибудь помог мне.

1 ответ

Решение
  1. Из часто задаваемых вопросов JBehave:

Быстрое решение для запуска с TestNG - просто аннотируйте метод run() в корневом классе JUnitStory/Stories с помощью аннотации TestNG @Test:

public class YourStory extends JUnitStory/Stories {

    @org.testng.annotations.Test 
    public void run() throws Throwable {
        super.run();
    }
}

Обратите внимание, что это всего лишь один из способов запуска историй, и если вы используете другие методы на основе Embedder, вам необходимо соответствующим образом изменить используемую аннотацию теста.

Для методов на основе Embedder, здесь есть документация.

  1. Возможно, вы захотите использовать аннотации JBehave, а не TestNG, так как вы будете запускать истории и сценарии, а не классы и комплекты. Как видите, одна история (из нескольких сценариев) рассматривается как один тест, который имеет смысл, если вы думаете о таких вещах, как фон.

  2. Поскольку TestNG рассматривает одну историю как один тест, я не вижу никакой причины, по которой она не будет взята. Попробуйте.

  3. Отчеты об испытаниях см. В документации JBehave еще раз. Это позволяет вводить пользовательских репортеров.

Сказав все это, не уходите от TDD. В идеале нужно иметь несколько высокоуровневых сценариев, охватывающих всю систему, больше интеграционных тестов и абсолютную массу модульных тестов.

Например, если у вас есть форма для проверки, просто приведите несколько примеров, которые показывают, как пользователь руководствуется при заполнении формы. Проверьте остальную часть проверки, создав модульные тесты для класса проверки. (Вы можете все еще думать о них как о примерах и помещать Given / When / Then в комментарии, но использование JBehave излишне для тестов с технической аудиторией.)

См. Тестовую пирамиду для получения дополнительной информации и избегайте тестового конуса мороженого.

Другие вопросы по тегам