- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个 testng.xml 文件来运行一些标记为冒烟测试(使用组)的测试。现在我尝试将此 xml 文件作为 testng 套件运行,但它无法通过所有测试用例。浏览器甚至打不开。请参阅下面的 xml 文件。
<suite name="Smoke Test" verbose="1">
<parameter name="browser" value="chrome"></parameter>
<test name="Smoke Test">
<groups>
<run>
<include name="smoketest" />
</run>
</groups>
<packages>
<package name="com.banner.tests" />
</packages>
</test>
</suite>
错误消息是:
java.lang.ExceptionInInitializerError
at com.cub.tests.Coupons.addCouponAsSignedInUser(Coupons.java:125)
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:497)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:108)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:661)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:869)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1193)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:126)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.privateRun(TestRunner.java:744)
at org.testng.TestRunner.run(TestRunner.java:602)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:380)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:375)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)
at org.testng.SuiteRunner.run(SuiteRunner.java:289)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1301)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1226)
at org.testng.TestNG.runSuites(TestNG.java:1144)
at org.testng.TestNG.run(TestNG.java:1115)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:230)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:76)
Caused by: java.lang.NullPointerException
at java.io.File.<init>(File.java:277)
at com.relevantcodes.extentreports.Report.setFilePath(Report.java:527)
at com.relevantcodes.extentreports.ExtentReports.<init>(ExtentReports.java:80)
at com.relevantcodes.extentreports.ExtentReports.<init>(ExtentReports.java:375)
at com.common.utils.ExtentManager.getReporter(ExtentManager.java:13)
at com.common.utils.ExtentTestManager.<clinit>(ExtentTestManager.java:11)
... 26 more
下面是我用来设置驱动程序的 SuiteBase 代码:
@BeforeSuite
public void beforeSuiteActivties() {
logger.info("Performing BeforeSuite activities..");
setApplicationProperties();
testURL = getTestURL();
setTestData();
hubURL = getHubAddress();
if(banner.equalsIgnoreCase("MACKENTHUNS")){
updateXML = new UpdateXML();
updateXML.updateTestData(testDataFileName);
}
extentReportPath = System.getProperty("user.dir") + "\\test-output\\extent\\" + banner + "\\extentreport.html";
extent = ExtentManager.getReporter();
}
@AfterSuite
public void afterSuiteActivities() {
extent.close();
}
@Parameters({ "browser" })
@BeforeTest
public void beforeTestActivities(String browserName) {
logger.info("Performing Before Test Activities");
setUpDriver(browserName);
setObjects();
}
@BeforeMethod
public void beforeMethodActivities(Method method) {
logger.info("Performing Before Method Activities");
ExtentTestManager.startTest(method.getName());
/*if (!linkExists(testURL)) {
throw new SkipException("The test link --> " + testURL + " is not working");
}*/
commonPage = new CommonPage(getDriver());
boolean isSignInVisible = false;
isSignInVisible = commonPage.isSignInPresent();
logger.info("Is User Logged Out? " + isSignInVisible);
if (!isSignInVisible) {
try {
commonPage.clickFooterLink(CommonPage.FOOTERLINK_LOGOUT);
CommonPage.waitForPageToBeReady(getDriver());
} catch (Exception exception) {
logger.error("Error occurred while trying to click on Logout link");
}
} else
logger.info("Sign In link is available for login so proceeding with next test method execution");
}
public void setUpDriver(String browserName) {
try {
if (testURL != "" && hubURL != "") {
logger.info("Test Environment -- > " + environment);
logger.info("Validation on URL -- > " + testURL);
logger.info("Hub URL -- > " + hubURL);
driver = new RemoteWebDriver(new URL(hubURL), getBrowserCapabilities(browserName));
setWebDriver(driver);
getDriver().get(testURL);
getDriver().manage().window().maximize();
getDriver().manage().timeouts().implicitlyWait(25, TimeUnit.SECONDS);
} else {
logger.error("Either test URL or Hub URL is empty... So cannot procced with the test execution");
}
} catch (Exception exception) {
logger.error("Something went wrong while initializing the driver");
exception.printStackTrace();
}
}
@AfterMethod
public void afterMethodActivities(ITestResult result) {
logger.info("Performing After Method Activities");
commonPage = new CommonPage(getDriver());
try {
commonPage.closePopup();
} catch (Exception exception) {
logger.error("Something went wrong while closing the popup --> After Method");
//exception.printStackTrace();
}
if (result.getStatus() == ITestResult.FAILURE) {
ExtentTestManager.getTest().log(LogStatus.FAIL, result.getThrowable());
} else if (result.getStatus() == ITestResult.SKIP) {
ExtentTestManager.getTest().log(LogStatus.SKIP, "Test skipped " + result.getThrowable());
} else {
ExtentTestManager.getTest().log(LogStatus.PASS, "Test passed");
}
if(commonPage.isAlertPresent()){
commonPage.closeAlert();
}
ExtentManager.getReporter().endTest(ExtentTestManager.getTest());
ExtentManager.getReporter().flush();
}
public void setObjects() {
logger.info("Setting the object repository file");
objectFileName = resourceFolder + "\\" + banner + "\\webobjects.properties";
logger.info("Banner - " + banner + "/" + "Repository file - " + objectFileName);
try {
webObjectProperties = new Properties();
fip = new FileInputStream(new File(objectFileName));
webObjectProperties.load(fip);
} catch (Exception exception) {
logger.error("Error occurred while reading the webobjects properties file");
exception.printStackTrace();
}
}
public void setTestData() {
banner = getBanner();
logger.info("Setting the test data file");
if (environment.contains("prod")) {
testDataFileName = resourceFolder + "\\" + banner + "\\prodtestdata.xml";
} else {
testDataFileName = resourceFolder + "\\" + banner + "\\testdata.xml";
}
logger.info("Banner - " + banner + "/" + "TestData file - " + testDataFileName);
}
public static String getBanner() {
if (System.getProperty("banner") == null) {
try {
return properties.getProperty("banner");
} catch (Exception exception) {
logger.error("Error occurred while reading the banner value");
exception.printStackTrace();
}
} else {
return System.getProperty("banner");
}
return "";
}
private static DesiredCapabilities getBrowserCapabilities(String browserType) {
DesiredCapabilities capability;
switch (browserType) {
case "firefox":
System.out.println("Opening firefox driver");
capability = DesiredCapabilities.firefox();
// capability.setCapability("marionette", true);
capability.setBrowserName("firefox");
capability.setVersion("ANY");
capability.setPlatform(Platform.ANY);
return capability;
case "chrome":
System.out.println("Opening chrome driver");
return DesiredCapabilities.chrome();
case "internet explorer":
System.out.println("Opening IE driver");
capability = DesiredCapabilities.internetExplorer();
System.out.println("IE PlatForm : " + capability.getPlatform());
System.out.println("IE Browser Name :" + capability.getBrowserName());
capability.setPlatform(Platform.WINDOWS);
capability.setBrowserName("internet explorer");
capability.setCapability(InternetExplorerDriver.INTRODUCE_FLAKINESS_BY_IGNORING_SECURITY_DOMAINS, true);
capability.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);
capability.setCapability(InternetExplorerDriver.IGNORE_ZOOM_SETTING, true);
return capability;
case "safari":
System.out.println("Opening Safari driver");
capability = DesiredCapabilities.safari();
SafariOptions safariOptions = new SafariOptions();
safariOptions.setUseCleanSession(true);
safariOptions.setUseTechnologyPreview(true);
capability.setCapability(SafariOptions.CAPABILITY, safariOptions);
capability.setPlatform(Platform.MAC);
return capability;
default:
System.out.println("browser : " + browserType + " is invalid, Launching Firefox as browser of choice..");
return DesiredCapabilities.firefox();
}
}
最佳答案
将 alwaysRun = true
添加到您的 @BeforeSuite
/@AfterSuite
中,然后重试。你应该很好。
问题是您的前后套件配置方法不属于任何组,这就是您似乎正在初始化范围报告的地方。
当您按组运行时,TestNG 将仅执行属于该组的那些测试/配置。
为了确保无论选择运行哪个组,如果 TestNG 应始终运行您的配置方法,您应该向它们添加 alwaysRun=true
。
关于java - 当我使用组时无法运行 testng xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48193957/
SQLite、Content provider 和 Shared Preference 之间的所有已知区别。 但我想知道什么时候需要根据情况使用 SQLite 或 Content Provider 或
警告:我正在使用一个我无法完全控制的后端,所以我正在努力解决 Backbone 中的一些注意事项,这些注意事项可能在其他地方更好地解决......不幸的是,我别无选择,只能在这里处理它们! 所以,我的
我一整天都在挣扎。我的预输入搜索表达式与远程 json 数据完美配合。但是当我尝试使用相同的 json 数据作为预取数据时,建议为空。点击第一个标志后,我收到预定义消息“无法找到任何内容...”,结果
我正在制作一个模拟 NHL 选秀彩票的程序,其中屏幕右侧应该有一个 JTextField,并且在左侧绘制弹跳的选秀球。我创建了一个名为 Ball 的类,它实现了 Runnable,并在我的主 Draf
这个问题已经有答案了: How can I calculate a time span in Java and format the output? (18 个回答) 已关闭 9 年前。 这是我的代码
我有一个 ASP.NET Web API 应用程序在我的本地 IIS 实例上运行。 Web 应用程序配置有 CORS。我调用的 Web API 方法类似于: [POST("/API/{foo}/{ba
我将用户输入的时间和日期作为: DatePicker dp = (DatePicker) findViewById(R.id.datePicker); TimePicker tp = (TimePic
放宽“邻居”的标准是否足够,或者是否有其他标准行动可以采取? 最佳答案 如果所有相邻解决方案都是 Tabu,则听起来您的 Tabu 列表的大小太长或您的释放策略太严格。一个好的 Tabu 列表长度是
我正在阅读来自 cppreference 的代码示例: #include #include #include #include template void print_queue(T& q)
我快疯了,我试图理解工具提示的行为,但没有成功。 1. 第一个问题是当我尝试通过插件(按钮 1)在点击事件中使用它时 -> 如果您转到 Fiddle,您会在“内容”内看到该函数' 每次点击都会调用该属
我在功能组件中有以下代码: const [ folder, setFolder ] = useState([]); const folderData = useContext(FolderContex
我在使用预签名网址和 AFNetworking 3.0 从 S3 获取图像时遇到问题。我可以使用 NSMutableURLRequest 和 NSURLSession 获取图像,但是当我使用 AFHT
我正在使用 Oracle ojdbc 12 和 Java 8 处理 Oracle UCP 管理器的问题。当 UCP 池启动失败时,我希望关闭它创建的连接。 当池初始化期间遇到 ORA-02391:超过
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 9 年前。 Improve
引用这个plunker: https://plnkr.co/edit/GWsbdDWVvBYNMqyxzlLY?p=preview 我在 styles.css 文件和 src/app.ts 文件中指定
为什么我的条形这么细?我尝试将宽度设置为 1,它们变得非常厚。我不知道还能尝试什么。默认厚度为 0.8,这是应该的样子吗? import matplotlib.pyplot as plt import
当我编写时,查询按预期执行: SELECT id, day2.count - day1.count AS diff FROM day1 NATURAL JOIN day2; 但我真正想要的是右连接。当
我有以下时间数据: 0 08/01/16 13:07:46,335437 1 18/02/16 08:40:40,565575 2 14/01/16 22:2
一些背景知识 -我的 NodeJS 服务器在端口 3001 上运行,我的 React 应用程序在端口 3000 上运行。我在 React 应用程序 package.json 中设置了一个代理来代理对端
我面临着一个愚蠢的问题。我试图在我的 Angular 应用程序中延迟加载我的图像,我已经尝试过这个2: 但是他们都设置了 src attr 而不是 data-src,我在这里遗漏了什么吗?保留 d
我是一名优秀的程序员,十分优秀!