是否可以将Jbehave与testNG集成?

时间:2015-08-28 09:40:11

标签: java testng bdd jbehave

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

  
      
  1. 如何使用Jbehave + TestNG创建简单的java文件。
  2.   
  3. 用Jbehave实现之后是否可以使用TestNG的所有功能(比如,注释.Out BeforeClass,afterClass,   BeforeSuite,AfterSuite)

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

  6.   
  7. 如何在Jbehave中集成自定义测试报告?

  8.   

我真的没想到任何实际的例子或工作代码。我只是想了解概述之旅,以及一些投入来完成这项任务。

它非常有用如果有人分享链接,而且非常基本的代码让我更加清楚。

到目前为止,我尝试了以下内容:

功能文件:

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 个答案:

答案 0 :(得分:4)

  1. 来自JBehave's FAQ
  2.   

    使用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的方法,有文档here

    1. 您可能希望使用JBehave's annotations而不是TestNG,因为您将运行故事和方案而不是类和套件。正如您所看到的,一个故事(几个场景)被视为一个测试,如果您考虑背景等事情,这是有意义的。

    2. 由于TestNG将一个故事视为一个测试,我无法理解为什么它不会被接受。试一试。

    3. 有关测试报告,请再次参阅JBehave's documentation。它允许注入定制记者。

    4. 说了这么多,不要远离TDD 。理想情况是有一些遍历整个系统的高级场景,比这更多的集成测试,以及绝对吨的单元测试。

      例如,如果您有要验证的表单,只需输入几个示例,说明如何引导用户填写表单。通过为验证类创建单元测试来检查剩余的验证。 (您仍然可以将它们视为示例,并在评论中添加Given / When / Then,但使用JBehave对于技术受众的测试来说是过度的。)

      有关详细信息,请参阅testing pyramid,并避开testing ice-cream cone