Maven / TestNg无法找到诱惑@step注释

时间:2018-06-06 18:14:42

标签: maven annotations allure

在我的maven项目(tetsng,java)中实现诱惑@Step注释时遇到问题。

(更新)共享pom文件:

eproject 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>src</groupId>
<artifactId>AutomationTestSuit</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>3.11.0</version>
    </dependency>

     <dependency>
         <groupId>org.testng</groupId>
         <artifactId>testng</artifactId>
         <version>6.14.2</version>
         <scope>test</scope>
     </dependency>

    <dependency>
        <groupId>io.qameta.allure</groupId>
        <artifactId>allure-testng</artifactId>
        <version>2.6.0</version>
    </dependency>

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>

</dependencies>



<build>
    <resources>
        <resource>
            <directory>src\main\resources</directory>
            <filtering>true</filtering>
        </resource>
    </resources>

    <testResources>
        <testResource>
            <directory>src\test\resources</directory>
            <filtering>true</filtering>
        </testResource>
    </testResources>


    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <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>
                    <file>${project.basedir}/suites/smoke.xml</file>
                </suiteXmlFiles>

                <systemPropertyVariables>
                    <environment.properties>/environment.properties</environment.properties>
                </systemPropertyVariables>

                <argLine>
                    -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/1.9.1/aspectjweaver-1.9.1.jar"
                </argLine>
            </configuration>

            <dependencies>
                <dependency>
                    <groupId>org.aspectj</groupId>
                    <artifactId>aspectjweaver</artifactId>
                    <version>1.9.1</version>
                </dependency>
            </dependencies>
        </plugin>


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

我尝试将Step注释添加到页面类但它失败了:

package com.pages.login_page;


import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;
import org.openqa.selenium.support.PageFactory;


public class LoginPageElements {

private WebDriver driver;


@FindBy(how = How.ID, using = "test")
private WebElement logonID;

@FindBy(how = How.ID, using = "test")
private WebElement logonPassword;

@FindBy(how = How.ID, using = "test")
private WebElement logonSubmit;


public LoginPageElements(WebDriver driver)
{
    this.driver = driver;
    PageFactory.initElements(driver,this);
}

@Step("login step") //step is underlined on this place with can't resolve symbol Step error

public void Login_as(String sUsername, String sPassword) {
        logonID.sendKeys(sUsername);
        logonPassword.sendKeys(sPassword);
        logonSubmit.click();
}

@Step error example

我在MytestListener类中实现它时与@Attachments一样的问题:

see the screenshot

请帮我解决问题。

3 个答案:

答案 0 :(得分:0)

我注意到你正在使用过时的Allure版本。这是正确的导入

<!-- https://mvnrepository.com/artifact/io.qameta.allure/allure-testng -->
<dependency>
    <groupId>io.qameta.allure</groupId>
    <artifactId>allure-testng</artifactId>
    <version>2.6.0</version>
</dependency>

使用Allure 2,您不需要配置Listener,但您需要配置AspectJ。在这里,您可以找到Maven + TestNG的示例:https://docs.qameta.io/allure/#_testng

答案 1 :(得分:0)

问题在于社区版本的想法。它似乎不支持aspectj插件。如果有人会遇到同样的问题,请查看:https://www.jetbrains.com/help/idea/java-compiler.html

答案 2 :(得分:0)

我个人认为问题出在<scope>test</scope>。 我从依赖项中删除了它:

 <dependency>
    <groupId>io.qameta.allure</groupId>
    <artifactId>allure-testng</artifactId>
    <version>LAST_VERSION</version>
    <scope>test</scope>
</dependency>

和@Step注释开始被识别。