当前位置: 首页 > 知识库问答 >
问题:

JUnit runner类无法执行@before

齐意致
2023-03-14

以下是项目结构:

项目结构

课前和课后

    Test Runner class:
    package runnerPackage;

    import org.junit.runner.RunWith;
    import cucumber.api.CucumberOptions;
    import cucumber.api.junit.Cucumber;

    @RunWith(Cucumber.class)
    @CucumberOptions(   plugin = {"html:target/cucumber-html-report",
    "json:target/cucumber.json",
    "pretty:target/cucumber-pretty.txt",
    "usage:target/cucumber-usage.json"
     }, 
    features="classpath:MyFirstApp.feature",glue={"stepDefinitions"},tags=
    {"@sceneOne1"})
    public class TestRunner {

    }
Feature file :
@tag

Feature: Test HDFC

@sceneOne1

Scenario: Test HDFC

Given I open HDFC Bank home page and click on 'Login' button

***********************************************
Step Definition :

package stepDefinitions;

import pages.MyFirstMethod;

import cucumber.api.java.en.Given;

public class MyFirstStepDefinition {


    MyFirstMethod m=new MyFirstMethod();

    @Given("^I open HDFC Bank home page and click on 'Login' button$")

   public void iOpenHDFCBankHomePageAndClickOnLoginButton() throws 

    Throwable {

    m.clickOnElement();

    }
 }
**********************************************
Before After class:

package runnerPackage;

import org.openqa.selenium.chrome.ChromeDriver;

import pages.ConfigReadFile;

import pages.PageInstances;

import cucumber.api.Scenario;

import cucumber.api.java.After;

import cucumber.api.java.Before;

公有类BeforeAfter扩展Page实例{

@Before
public static void runBefore(Scenario scenario)
    {
    System.setProperty("webdriver.chrome.driver", "D:\\chromedriver_win32_2.26\\chromedriver.exe");
    System.out.println("reached here");
    driver=new ChromeDriver();
    System.out.println(ConfigReadFile.URL);
    driver.get(ConfigReadFile.URL);

    }
    @After
    public static void runAfter()
    {
    System.out.println("do noting");
    }

}
**********************************************************
Page Instances:
package pages;

import org.openqa.selenium.WebDriver;

public class PageInstances {
    protected static WebDriver driver;

}

方法:包页;

导入Java . util . concurrent . time unit;

导入org . open QA . selenium . by;导入org . open QA . selenium . interactions . actions;

公共类MyFirstMethod扩展PageInstances{

public void clickOnElement()
{
    Actions action=new Actions(driver);
    action.moveToElement(driver.findElement(By.xpath(".//*[@id='cee_closeBtn']/img[@alt='Close']"))).click();
    action.perform();
    //driver.findElement(By.xpath(".//*[@id='cee_closeBtn']/img[@alt='Close']")).click();
    driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);
    driver.findElement(By.id("loginsubmit")).click();
    System.out.println(driver.getCurrentUrl());
    //loginButton.click();

} }

Configuration xml:
<ConfigurationFile.xml>

<url>some random url</url>

</ConfigurationFile.xml>

配置读取文件 :

package pages;

import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;

public class ConfigReadFile {

public static final String URL;

static {


File f=new File("file path");

DocumentBuilderFactory 

docbuildFactory=DocumentBuilderFactory.newInstance();

DocumentBuilder builder = null;

try {
builder = docbuildFactory.newDocumentBuilder();
} catch (ParserConfigurationException e1) {
// TODO Auto-generated catch block

e1.printStackTrace();

}
Document doc = null;
try {
 doc = builder.parse(f);
 } catch(Exception es)
{

}
URL=doc.getElementsByTagName("url").item(0).getTextContent();

System.out.println(URL);
}
}

我想为每个secnario打开chrome浏览器和hdfc链接,所以我用@before

共有1个答案

裴华荣
2023-03-14

应该提到胶水={"step定义","runnerPackage"}以便它加载钩子类

 类似资料:
  • 我正在尝试从命令行从Android SDK 工具运行 。但是,它不会启动并打印以下异常: 我的命令行是: 已设置。 以下是我的安装(sdkmanager - list): 怎么了?

  • 我有SunOs 5.10 unix服务器,在那里我编写了一个脚本来执行java文件,如下所示 在这个脚本中,有很多代码,其中包括日志文件,以及在导出JAVA HOME之前添加的其他二进制文件类路径。但当我执行时,我得到以下错误 我更改了很多java版本,但都出现了相同的错误

  • 我正在编写单元测试的方法,以找到银行附近我的位置。我嘲弄了这个类并尝试调用这些方法。但是,控件不会转到方法来执行它。下面是单元测试用例。 我所尝试的也是调用它的真实方法, 这调用真实的方法,但我上面嘲笑的方法执行起来就像真实的方法一样。意思是“被嘲弄的方法”没有返回我要求它们返回的内容。 那么,我在这里做错了什么?方法为什么不执行?

  • 问题内容: 构建示例mvn项目后,我添加了依赖项和Java代码。 然后,我通过成功构建了JAR 。最后,尝试运行JAR时遇到错误。 问题答案: 您需要使用以下命令在清单中设置主类 取自这里。 编辑 如果您想将生成的jar与依赖项打包在一起,可以使用此 取自这里。

  • 构建一个示例mvn项目后,我添加了我的依赖项 然后,我通过成功地构建了我的JAR。最后,我在尝试运行JAR时遇到了一个错误。

  • 我使用了jQuery方法调用:,因此语法类似于: 问题: 当我单击image按钮时,它会给出以下错误消息: