簡體   English   中英

黃瓜測試被忽略-TestNG

[英]Cucumber test ignored - TestNG

我希望我關於SO的第二個問題寫得很好。 我正在嘗試在Java中使用Gherkin,TestNG和Selenium自動化測試用例。 在Intellij中使用Maven項目。

我可以在.feature文件中啟動測試用例時啟動它們,但是當我使用testng.xml文件或Test Runner類時,它將以某種方式忽略測試用例。

我已經檢查了似乎已正確配置的項目設置。 還檢查了我的pom.xml是否具有適當的依賴項(希望如此)

我的測試功能

Feature: Xray Jira

  @TEST_01 @STC
  Scenario: Xray Jira Testing
    Given The user login to the application
    When the credentials are entered
    Then the homepage is viewed

我的測試跑步者

package Runners;

import io.cucumber.testng.AbstractTestNGCucumberTests;
import io.cucumber.testng.CucumberOptions;
import org.testng.annotations.DataProvider;

@CucumberOptions(
        features = "src/test/resources/",
        glue = {"src/test/Steps/"},
        plugin = {
                "pretty",
                "html:target/cucumber-reports/cucumber-pretty",
                "json:target/cucumber-reports/CucumberTestReport.json"
        })
public class UITest extends AbstractTestNGCucumberTests {

}

我的步驟定義-從功能文件啟動測試用例時,步驟定義中的以下代碼正常工作

package Steps;

import Pages.BasePage;
import Pages.HomePage;
import Pages.LoginPage;
import Helper.ConfigFileReader;
import io.cucumber.java.en.*;
import org.openqa.selenium.WebDriver;
import org.testng.Assert;

public class MyStepdefs extends BasePage {
    private WebDriver driver = null;
    private Hooks lHooks;

    public MyStepdefs(Hooks lHooks) {
        this.driver = lHooks.driver;
    }

    @Given("The user login to the application")
    public void the_user_login_to_the_application() {
        LoginPage loginObject = new LoginPage(driver);
        resultValue = loginObject.VerifyUrl();
        Assert.assertTrue(resultValue);
    }

    @When("the credentials are entered")
    public void the_credentials_are_entered() {
        ConfigFileReader config = new ConfigFileReader();
        String userID = config.getUserID();
        String userPassword = config.getUserPassword();
        LoginPage loginObject = new LoginPage(driver);
        loginObject.enterName(userID);
        loginObject.enterPassword(userPassword);
        loginObject.clickLoginButton();
        HomePage lHome = new HomePage(driver);
        resultValue=lHome.verifyMenuIsDisplayed();
        Assert.assertTrue(resultValue);
    }

    @Then("the homepage is viewed")
    public void the_homepage_is_viewed() {

        HomePage homeObject = new HomePage(driver);
        resultValue=homeObject.verifyMenuIsDisplayed();
        Assert.assertTrue(resultValue);

    }

我的POM.xml

//Below is my POM.xml I usually followed different tutorials online to get the dependencies. I had issues with compatibility of different version of the dependencies. I was able to correct them. Not sure if it is still the problem

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>execute_auto</groupId>
    <artifactId>execute_auto</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-core -->
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-core</artifactId>
            <version>4.7.1</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-java -->
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>4.7.1</version>
            <scope>test</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/io.cucumber/gherkin -->
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>gherkin</artifactId>
            <version>5.0.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-jvm-deps -->
        <dependency>    
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-jvm-deps</artifactId>
            <version>1.0.6</version>
            <scope>provided</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.141.59</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-testng -->
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-testng</artifactId>
            <version>4.7.1</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.testng/testng -->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>7.0.0</version>
            <scope>test</scope>
        </dependency>


        <!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-picocontainer -->
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-picocontainer</artifactId>
            <version>4.7.1</version>
        </dependency>


        <!-- Web driver manager dependency -->

        <dependency>
            <groupId>io.github.bonigarcia</groupId>
            <artifactId>webdrivermanager</artifactId>
            <version>3.6.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.github.bonigarcia</groupId>
            <artifactId>webdrivermanager</artifactId>
            <version>3.6.2</version>
            <scope>compile</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.1.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.0</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.21.0</version>
                <configuration>
                    <suiteXmlFiles>testng.xml</suiteXmlFiles>
                </configuration>
            </plugin>
            <plugin>
                <groupId>net.masterthought</groupId>
                <artifactId>maven-cucumber-reporting</artifactId>
                <version>3.15.0</version>
                <executions>
                    <execution>
                        <id>execution</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <projectName>POC-language-testing</projectName>
                            <outputDirectory>target/cucumber-reports/advanced-reports</outputDirectory>
                            <cucumberOutput>target/cucumber-reports/CucumberTestReport.json</cucumberOutput>
                            <buildNumber>1</buildNumber>
                            <parallelTesting>false</parallelTesting>
                        </configuration>
                    </execution>
                </executions>
            </plugin>


        </plugins>


    </build>

</project>

我的預期結果應該是測試通過了。 但是當通過testng.xml或Runner類啟動時,它總是被忽略。 如果有人可以幫助我,我會非常高興。

PS:我的最終目標是使用Page Object Model在使用Cucumber和Java的Intellij上自動化並啟動測試用例。 這應該更新Jira中Xray上的測試用例。 如果有人對此類功能有任何有用的鏈接,將不勝感激。

glue元素應該是軟件包名稱,而不是目錄。 因此,如果您的步驟在軟件包Steps則膠水應該為Steps

另外,TestNG在SkipException引發的SkipException異常中吞噬了消息,因此您應該添加summary插件,以查看Cucumber跳過測試的原因(最可能的原因是未定義的步驟,因為您沒有正確配置膠水)。

@CucumberOptions(
        features = "src/test/resources/",
        glue = {"Steps"},
        plugin = {
                "summary"
                "pretty",
                "html:target/cucumber-reports/cucumber-pretty",
                "json:target/cucumber-reports/CucumberTestReport.json"
        })
public class UITest extends AbstractTestNGCucumberTests {

}

順便說一句:您不應在pom中包括傳遞依賴。 您可以並且應該刪除gherkin cucumber-coregherkincucumber-jvm-deps依賴項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM