TestNG: «Тесты не найдены» при запуске тестов через testng - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь запустить простой тест Cucumber / Java через testng.xml.

Итак, у меня есть testng.xml:

<?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Cucumber Framework">
<test name="Cucumber Tests" junit="true">
    <classes>
        <class name="CucumberFramework.runner.MainRunner"></class>
    </classes>
</test>
</suite>

И я использую runner.класс, в котором я устанавливаю путь / опции / и т. д. для файлов, шагов и отчетов:

package CucumberFramework.runner;

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

@RunWith(Cucumber.class)

@CucumberOptions (
        features = {"src/test/java/CucumberFramework/featureFiles"},
        glue = {"CucumberFramework.steps"},
        monochrome = true,
        tags = {},
        plugin = {"pretty",
                "html:target/cucumber",
                "json:target/cucumber.json",
                "com.cucumber.listener.ExtentCucumberFormatter:target/report.html"}
)

public class MainRunner extends AbstractTestNGCucumberTests {
}

Но когда я запускаю свой testng.xml как комплект TestNG, он:

1) прохождение моих сценариев,

НО

2) бросок "Тесты не найдены".enter image description here

Что я делаю не так?

Ответы [ 4 ]

0 голосов
/ 07 мая 2019

Я столкнулся с аналогичной проблемой, когда я сохранял данные испытаний в электронной таблице.Я добавил столбец «Выполнить как Y», и это было решено.

0 голосов
/ 05 октября 2018

Проект с Cucumber и TestNG не требует класса с методом, аннотированным @Test.

No test were found может быть связано с тем, как вы запускаете тесты Cucumber.

Ниже приведен минимальный проект для отображения базовых требований.

в предположении следующей структуры

src/test/java/stepdef/StepDefs.java
src/test/java/runner/RunnerTest.java
src/test/resources/features/test.feature
pom.xml

pom.xml

<?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>com.suboptimal</groupId>
    <artifactId>cuke-testng3</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <dependencies>
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-testng</artifactId>
            <version>3.0.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>3.0.2</version>
            <type>jar</type>
        </dependency>
    </dependencies>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
</project>

test.feature

Feature: test
    Scenario: something to test
        Given some step
        Then this is expected

StepDefs.java

package stepdef;

import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;

public class StepDefs {
    @Given("^some step$")
    public void someStep() throws Throwable {
        System.out.println("execute someStep");
    }

    @Then("^this is expected$")
    public void thisIsExpected() throws Throwable {
        System.out.println("execute thisIsExpected");
    }
}

RunnerTest.java

package runner;

import cucumber.api.CucumberOptions;
import cucumber.api.testng.AbstractTestNGCucumberTests;

@CucumberOptions(features = "src/test/resources/features", glue = "stepdef")
public class RunnerTest extends AbstractTestNGCucumberTests {
}

Тест может быть выполнен через Maven с

mvn clean test

output

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running runner.RunnerTest
Configuring TestNG with: org.apache.maven.surefire.testng.conf.TestNG652Configurator@5eb5c224
execute someStep
execute thisIsExpected

1 Scenarios (1 passed)
2 Steps (2 passed)
0m0.019s

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.552 sec

Как указано в последней строке Test run: 1 сценарий Cucumber распознается как тестовый прогон.

edit Возможность выполнения тестов Cucumber как набора TestNG.

добавление к pom.xml

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.0</version>
            <configuration>
                <suiteXmlFiles>
                    <suiteXmlFile>testng.xml</suiteXmlFile>
                </suiteXmlFiles>
            </configuration>
        </plugin>
    </plugins>
</build>

создать файл testng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Cucumber Framework" >
    <test name="Cucumber Tests">
        <classes>
            <class name="runner.RunnerTest"></class>
        </classes>
    </test>
</suite>

выполнить тест с Maven как

mvn clean test

output

[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running TestSuite
execute someStep
execute thisIsExpected

1 Scenarios (1 passed)
2 Steps (2 passed)
0m0.020s

[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.614 s - in TestSuite
0 голосов
/ 05 октября 2018

@ SubOptimal - спасибо, человек, за столь ясное объяснение, теперь я знаю гораздо больше.

Что касается самой проблемы - наконец-то я решил ее, просто удалив упоминание junit в testng.xml.Как и в описании, которое я отметил «запустить как набор тестов», я должен пометить этот ответ как правильный, без обид.

0 голосов
/ 05 октября 2018

необходимо добавить аннотацию @Test для запуска.

...