- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Maven 项目,其中我正在从 pom.xml 文件运行 testng.xml。
我的 testng.xml 文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="tests">
<test name="FirefoxTest">
<parameter name="browser" value="firefox"/>
<classes>
<class name="tests.PM_User_Test"/>
</classes>
</test> <!-- Test -->
<test name="ChromeTest">
<parameter name="browser" value="chrome"/>
<classes>
<class name="tests.PM_User_Test"/>
<class name="tests.PM_Extension_Test"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
下面是我的类(class):
package base;
import java.io.IOException;
import java.lang.reflect.Method;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.UnexpectedAlertBehaviour;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.ITestResult;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.AfterSuite;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.Optional;
import org.testng.annotations.Parameters;
import utilities.ExcelReadAndWrite;
import utilities.Take_Screenshot;
public class ConfigClass
{
public WebDriver driver = null;
public static String excelPath = null;
public static ExcelReadAndWrite loginData;
public static ExcelReadAndWrite pmTests;
public static ExcelReadAndWrite snmTests;
public static ExcelReadAndWrite ipData;
@BeforeSuite
public void beforeSuite()
{
excelPath = "C://Users//mallikar//git//PM//PM//src//main//java//myTestData//TestData.xlsx";
loginData = new ExcelReadAndWrite("logindata", excelPath);
pmTests = new ExcelReadAndWrite("PMTestData", excelPath);
snmTests = new ExcelReadAndWrite("SNMTestData", excelPath);
ipData = new ExcelReadAndWrite("IP", excelPath);
}
@AfterSuite
public void afterSuite()
{
}
@Parameters({"browser"})
@BeforeClass
public void beforeClass(String browser)
{
DesiredCapabilities dc = new DesiredCapabilities();
dc.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.ACCEPT);
if(browser.equalsIgnoreCase("firefox"))
{
driver = new FirefoxDriver(dc);
}
else if(browser.equalsIgnoreCase("chrome"))
{
driver = new ChromeDriver();
}
}
/*@Parameters("browser")
@BeforeClass
public void beforeClass()
{
DesiredCapabilities dc = new DesiredCapabilities();
dc.setCapability(CapabilityType.UNEXPECTED_ALERT_BEHAVIOUR, UnexpectedAlertBehaviour.ACCEPT);
driver = new FirefoxDriver(dc);
}*/
@AfterClass
public void afterClass()
{
driver.close();
}
@BeforeMethod
public void beforeMethod()
{
// driver.get("https://sqa.stackexchange.com/questions/36253/taking-screenshot-on-test-failure-selenium-webdriver-testng");
// System.out.println(driver);
driver.manage().window().maximize();
driver.manage().deleteAllCookies();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
}
@AfterMethod
public void afterMethod(ITestResult result) throws IOException
{
if(result.getStatus() == 2)
{
String methodName = result.getMethod().getMethodName();
new Take_Screenshot().get_Screenshot(driver, methodName);
}
}
}
But I am getting the "Parameter 'browser' is required by BeforeClass on method beforeClass but has not been marked @Optional or defined" error in maven project.
However when I run only testng.xml file it is absolutely working fine. The pro
当我从 pom.xml 文件运行 testng.xml 时出现问题。
下面是我定义了 testng.xml 的 POM.xml 文件的内容:
<profiles>
<profile>
<id>Regression</id>
<build>
<plugins>
<plugin>
<inherited>true</inherited>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.2</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
我在互联网上浏览了很多有关此问题的帖子,但没有找到任何解决方案。请有人帮我解决这个问题。
下面是我运行 mvn clean install 命令时的控制台日志
Running TestSuite
Configuring TestNG with: org.apache.maven.surefire.testng.conf.TestNG652Configurator@ba4d54
Tests run: 10, Failures: 2, Errors: 0, Skipped: 8, Time elapsed: 2.368 sec <<< FAILURE!
beforeClass(tests.PM_Extension_Test) Time elapsed: 2.098 sec <<< FAILURE!
org.testng.TestNGException:
Parameter 'browser' is required by BeforeClass on method beforeClass but has not been marked @Optional or defined
at org.testng.internal.Parameters.createParams(Parameters.java:289)
at org.testng.internal.Parameters.createParametersForMethod(Parameters.java:377)
at org.testng.internal.Parameters.createParameters(Parameters.java:721)
at org.testng.internal.Parameters.createConfigurationParameters(Parameters.java:164)
at org.testng.internal.ConfigInvoker.invokeConfigurations(ConfigInvoker.java:275)
at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:176)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:122)
at java.util.ArrayList.forEach(ArrayList.java:1257)
at org.testng.TestRunner.privateRun(TestRunner.java:770)
at org.testng.TestRunner.run(TestRunner.java:591)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:402)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:396)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:355)
at org.testng.SuiteRunner.run(SuiteRunner.java:304)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1180)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1102)
at org.testng.TestNG.runSuites(TestNG.java:1032)
at org.testng.TestNG.run(TestNG.java:1000)
at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:77)
at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:159)
at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:99)
at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:106)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
beforeClass(tests.PM_User_Test) Time elapsed: 0.002 sec <<< FAILURE!
org.testng.TestNGException:
Parameter 'browser' is required by BeforeClass on method beforeClass but has not been marked @Optional or defined
at org.testng.internal.Parameters.createParams(Parameters.java:289)
at org.testng.internal.Parameters.createParametersForMethod(Parameters.java:377)
at org.testng.internal.Parameters.createParameters(Parameters.java:721)
at org.testng.internal.Parameters.createConfigurationParameters(Parameters.java:164)
at org.testng.internal.ConfigInvoker.invokeConfigurations(ConfigInvoker.java:275)
at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:176)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:122)
at java.util.ArrayList.forEach(ArrayList.java:1257)
at org.testng.TestRunner.privateRun(TestRunner.java:770)
at org.testng.TestRunner.run(TestRunner.java:591)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:402)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:396)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:355)
at org.testng.SuiteRunner.run(SuiteRunner.java:304)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1180)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1102)
at org.testng.TestNG.runSuites(TestNG.java:1032)
at org.testng.TestNG.run(TestNG.java:1000)
at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:77)
at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:159)
at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:99)
at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:106)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
Results :
Failed tests: beforeClass(tests.PM_Extension_Test): (..)
beforeClass(tests.PM_User_Test): (..)
Tests run: 10, Failures: 2, Errors: 0, Skipped: 8
[WARNING] Could not delete temp direcotry C:\Users\mallikar\git\PM\PM\target\surefire because Directory C:\Users\mallikar\git\PM\PM\target\surefire unable to be deleted.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 10.374 s
[INFO] Finished at: 2019-09-26T16:39:22+05:30
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test) on project PM: There are test failures.
[ERROR]
[ERROR] Please refer to C:\Users\mallikar\git\PM\PM\target\surefire-reports for the individual test results.
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
最佳答案
请尝试执行以下操作之一(应该可以解决您的问题)
@Parameters
是从包org.testng.annotations
导入的作为 TestNG 测试运行
,然后确保编辑运行配置并提供 JVM 参数-Dbrowser=火狐
mvn clean test -P Regression
(这将确保配置文件 Regression
被激活通过此,测试执行通过套件文件进行)关于java - maven项目中"Parameter '浏览器' is required by BeforeClass on method beforeClass but has not been marked @Optional or defined"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58109338/
我有一个 Maven 项目,其中我正在从 pom.xml 文件运行 testng.xml。 我的 testng.xml 文件如下所示:
我需要使用 TestNG 类向 @BeforeClass 方法添加参数。我正在使用以下代码动态运行 TestSuite: List suites = getXmlTestSuiteForUI(xmlN
我的JUnit 测试 很少,我想决定在运行时使用哪一个。我在 SO 上检查了以前的答案,最后动态创建了测试套件。 这个类是我的应用程序开始的地方。我有 CustomTestSuite 类和 Main
我有两个类,每个类包含 2 个测试用例和 Test1 类,其中一个方法带有 @BeforeClass,按照我的说法,这个方法也应该在 Test2 类之前运行,但它没有运行。 package W
我正在使用 JUnit 编写一些测试用例。我需要初始化一些静态变量,这些变量将用于该类中的所有测试用例。 为此我可以使用任何一个 静态初始化 block 或 @BeforeClass 的静态方法 使用
如何告诉 @Sql 注释只为该类运行一次,而不是为每个 @Test 方法运行一次? 喜欢与 @BeforeClass 具有相同的行为吗? @org.springframework.test.conte
我从 JUnit 开始,不理解注释 @Test 和 @BeforeClass。 我有以下代码: public class Toto { @BeforeClass public static v
我正在尝试使用 @BeforeClass 方法运行 Scala Junit 测试。当我运行这个测试类时,setup() 方法永远不会被执行。我在这里做错了什么?我正在使用 JUnit 4.12 和 S
我将 TestNG 与 Selenium WebDriver 一起使用,我使用的框架有一个基类,该基类具有 BeforeClass 方法,所有 Suite 类都从该基类扩展,并覆盖了 BeforeCl
我正在使用 IntelliJ IDEA CE 2018.3 和 JUnit 4.12。 我有一个看起来像这样的测试类: @RunWith(HierarchicalContextRunner.class
我正在使用 Selenium、TestNG 编写测试代码。我正在尝试在 @BeforeClass 部分设置一些元素,因为我在同一页面上重复这些操作。但是我收到空指针异常。有办法解决这个问题吗? pub
为什么不使用这些 JUnit 4 注释,我们为什么不使用静态和实例初始化程序 block 呢?以下代码显示只要静态初始化程序 block 运行,@BeforeClass 方法就会运行,而当实例初始化程
我希望使用 @BeforeClass 注释运行一个方法两次(或更多次)。有没有办法用 TestNG 做到这一点? 喜欢:@Test(invocationCount = 2)? 最佳答案 不,TestN
我很明白什么是@BeforeClass。它在 JUnit 测试运行开始之前执行一次并且 @Before 方法在每个测试用例之前执行。我的问题是关于一位非常资深的 stackoverflow 用户(Pé
我正在使用 @BeforeClass 注释来确保一组事件在一组 5-6 个测试中只完成一次。有 3 个 java 文件的层次结构。 File1 扩展了 TestCase File2 extends F
我的设置: 一个包含@BeforeClass 方法的TestBase 类 几个测试类 从 TestBase 类扩展并包含一个 @BeforeClass 方法 testNG 6.8.8 为什么要这样设置
TestNG 的@BeforeClass 和测试类的构造函数有什么区别?它在内部是如何运作的? 最佳答案 @BeforeClass 方法在测试类实例化后调用。 构造函数中的异常只会中止 TestNG
我正在学习junit,一开始就出现了问题。 一开始我想初始化将在测试中使用的对象。但是@BeforeClass 不会那样做。 public class InitTests { private Crou
根据 this父类(super class)的文档 @BeforeClass 方法将在当前类之前运行。但这不会发生在我的情况下。 我正在使用 junit 4.8.1。 你能告诉我我做错了什么吗? 我的
我有以下代码: @BeforeClass public static void setUpOnce() throws InterruptedException { fa
我是一名优秀的程序员,十分优秀!