@BeforeTest @AfterTest仅运行一次

时间:2018-06-24 12:05:45

标签: maven selenium cucumber testng

我正在研究Web whatsapp自动化,以便使用selenium-maven-cucumber-testng进行练习。我有以下问题。

预期:我有很多功能文件,并且我想要一个接一个地运行所有功能文件,如下所示:

获取第一个功能文件->打开浏览器->运行功能文件中提到的步骤->关闭浏览器。获取第二个功能文件->打开浏览器->运行功能文件中提到的步骤->关闭浏览器,依此类推。

结果:当前所有功能文件都在运行和传递。但是浏览器只打开一次,即

打开浏览器->运行功能文件1,功能文件2等->关闭浏览器。

我要按照“预期”中的说明运行。

我的Testng: testng.xml testing.xml

我的RunnerClass:

Runner.java Runner.java

我的钩子:

Hook.java Hook.java

2 个答案:

答案 0 :(得分:0)

BeforeTestAfterTest仅运行一次,因为testng.xml中只有一个test块。一种方法是为每个功能文件创建单独的运行器,并具有单独的test块。

<test name="Feature_File_1">
    <classes>
      <class name="Runner1"/>
    </classes>
  </test>

  <test name="Feature_File_2">
    <classes>
      <class name="Runner2"/>>
    </classes>
  </test>

也在当前运行器类中删除junit注释@RunWith

答案 1 :(得分:0)

您需要将TestNG挂钩更改为Cucumber挂钩。 这是为什么? 因为您想在问题中阐述每个场景后关闭浏览器。

请参见以下内容:

import cucumber.api.java.After;
import cucumber.api.java.Before;

public class Hooks {

@Before
public void beforeScenario(){
    System.out.println("This will run before the Scenario");
}   

@After
public void afterScenario(){
    System.out.println("This will run after the Scenario");
}
}