Я провел несколько тестов Selenium с помощью Cucumber + Maven. Раньше я использовал JUnit в качестве среды тестирования, но, поскольку я хочу запускать тесты несколько раз с разными параметрами, я рассмотрел использование TestNG, которое позволяет определять параметры перед каждым запуском, поэтому каждый сценарий Cucumber выполняется несколько раз в разных браузерах. ,
Я не получаю сообщение об ошибке, но ничего не выполняется, кроме
@BeforeTest
аннотация внутри моего TestRunner.class
Так что я предполагаю, что ошибка должна быть в пределах @Test
s
Мой testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Automationsuite" parallel="tests">
<test name="ChromeTest">
<parameter name="browserName" value="Chrome" />
<classes>
<class name="runner.TestRunner" />
</classes>
</test>
<!-- <test name="IETest">
<parameter name ="browserName" value="IE"/>
<classes>
<class name="runner.TestRunner" />
</classes>
</test> -->
</suite>
Мой класс TestRunner
package runner;
@CucumberOptions(
strict = true,
features ="Features/myInfineon_Login/InternalTesting/int_myInfineon_Login_Chrome.feature",
glue = {"stepsDefinitions"},
plugin = { "pretty", "json:target/cucumber-reports/cucumber.json",
"html:target/cucumber-reports",
"junit:target/cucumber-reports/xml-report.xml"
})
public class TestRunner /*extends AbstractTestNGCucumberTests*/{
private TestNGCucumberRunner testNGCucumberRunner;
private static TestContext tcon;
@BeforeClass(alwaysRun = true)
public void setUpClass() {
testNGCucumberRunner = new TestNGCucumberRunner(this.getClass());
}
@Parameters({ "browserName" })
@BeforeTest
public static void setUpScenario(String browser) {
tcon = new TestContext();
tcon.setupBrowserDriver(browser);
}
@Test(groups = "cucumber scenarios", description = "Runs Cucumber Scenarios", dataProvider = "scenarios")
public void runThisScenario(PickleEventWrapper pickleEvent, CucumberFeatureWrapper cucumberFeature) throws Throwable{
testNGCucumberRunner.runScenario(pickleEvent.getPickleEvent());
System.out.println("driver in test: " + tcon.getWebDriver());
}
@DataProvider
public Object[][] scenarios() {
if (testNGCucumberRunner == null) {
return new Object[0][0];
}
return testNGCucumberRunner.provideScenarios();
}
@AfterClass(alwaysRun = true)
public void tearDownClass() {
testNGCucumberRunner.finish();
}
}
my pom.xml
<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.myinfineon</groupId>
<artifactId>myinfineon-testing</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<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.19.1</version>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.8</version>
<scope>system</scope>
<systemPath>C:\Program Files\Java\jdk1.8.0_181\lib\tools.jar</systemPath>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
</dependency>
<dependency>
<groupId>com.crossbrowsertesting</groupId>
<artifactId>CBT_Helper</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.sourceforge.cobertura</groupId>
<artifactId>cobertura</artifactId>
<version>2.1.1</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-core -->
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-core</artifactId>
<version>4.4.0</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-html</artifactId>
<version>0.2.7</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-java -->
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>4.4.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-junit -->
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>4.4.0</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-jvm -->
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-jvm</artifactId>
<version>4.4.0</version>
<type>pom</type>
</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/net.masterthought/cucumber-reporting -->
<dependency>
<groupId>net.masterthought</groupId>
<artifactId>cucumber-reporting</artifactId>
<version>0.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/info.cukes/gherkin -->
<!-- https://mvnrepository.com/artifact/io.cucumber/gherkin -->
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>gherkin</artifactId>
<version>4.1.3</version>
<exclusions>
<exclusion>
<groupId>io.cucumber</groupId>
<artifactId>gherkin-jvm-deps</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hamcrest/hamcrest-core -->
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<version>2.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-picocontainer</artifactId>
<version>2.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple -->
<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180813</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.cucumber/cucumber-testng -->
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-testng</artifactId>
<version>4.4.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.testng/testng -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.3</version>
<!-- <scope>compile</scope> -->
</dependency>
<!-- https://mvnrepository.com/artifact/org.apiguardian/apiguardian-api -->
<dependency>
<groupId>org.apiguardian</groupId>
<artifactId>apiguardian-api</artifactId>
<version>1.1.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mockito/mockito-core -->
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>2.28.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Это единственное, к чему я применил изменения, и до этого все работало нормально.
Когда я проверяю, например, с помощью System.out.println()
класс TestRunner
действительно может читать сценарии и функции, но они не выполняются. Когда я пытаюсь добавить еще немного кода в аннотацию Test
в классе TestRunner
, он работает нормально, но, похоже, не распознает мой StepsDefinitions
и методы, содержащиеся в нем.
Я ничего не нашел здесь, потому что, как уже упоминалось, я не получаю сообщение об ошибке ..
Это часть журнала:
[JsonMessageSender] Sending message [TestResultMessage ==>
suite:Automationsuite, test:ChromeTest, class:runner.TestRunner,
method:runThisScenario, parameters:"MyScenario";"MyFeature";]
[BaseMessageSender] Received ACK:>ACK
[BaseMessageSender] Received ACK:>ACK
Любая помощь по этому вопросу будет принята с благодарностью!