是否可以将Jbehave与testNG集成?

SKu*_*mar 5 java bdd testng jbehave

目前我们正在使用TDD和规划来使用Jbehave迁移到BDD.我只是做了一些谷歌搜索,无法找到任何与Jbehave testNG的网站.我刚刚浏览了Jbehave官方网站,我了解到可以将jbehave库与任何类型的单元测试工具(如TestNg,Junit)集成.但我没有找到任何实际代码的示例代码.我期待一些专家的以下步骤:

  1. 如何使用Jbehave + TestNG创建一个简单的java文件.
  2. 在用Jbehave实现之后是否可以使用TestNG的所有功能(例如,注释.OmerClass,afterClass,BeforeSuite,AfterSuite)

  3. 如何通过TestNG.xml文件运行Jbehave要素文件/类.

  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
Run Code Online (Sandbox Code Playgroud)

测试步骤类文件:

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();
        }

    }
Run Code Online (Sandbox Code Playgroud)

但坚持使用TestNg创建一个测试运行器类文件.我不确定如何开始.

有人可以帮我创建一个测试运行器类文件,它将执行上面的代码.

我阅读了一些材料,但我没有足够的时间阅读所有这些材料,并实施如果有人帮助我,我将非常感激.

Lun*_*ore 5

  1. 来自JBehave 的常见问题解答

使用 TestNG 运行的快速修复方法是使用 TestNG @Test 注释来注释根 JUnitStory/Stories 类中的 run() 方法:

public class YourStory extends JUnitStory/Stories {

    @org.testng.annotations.Test 
    public void run() throws Throwable {
        super.run();
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,这只是运行故事的一种方法,如果您使用其他基于 Embedder 的方法,则需要更改相应使用的测试注释。

对于基于 Embedder 的方法,这里有文档。

  1. 您可能想要使用JBehave 的注释而不是 TestNG 的注释,因为您将运行故事和场景而不是类和套件。正如您所看到的,一个故事(多个场景)被视为一个测试,如果您考虑背景等因素,这是有意义的。

  2. 由于 TestNG 将一个故事视为一项测试,因此我看不出有任何理由不选择它。试一试。

  3. 测试报告请再次查看JBehave的文档。它允许注入自定义记者。

话虽如此,但不要放弃 TDD。理想的情况是拥有一些遍历整个系统的高级场景、更多的集成测试以及绝对大量的单元测试。

例如,如果您有一个表单需要验证,只需举几个示例来说明如何引导用户填写表单。通过为验证类创建单元测试来检查其余的验证。(您仍然可以将它们视为示例,并将给定/何时/然后放在注释中,但对于技术受众的测试来说,使用 JBehave 是多余的。)

请参阅测试金字塔以获取更多信息,并避免测试蛋卷冰淇淋