我们公司正在开发一个用于Web应用程序的Selenium,POM,Maven和Java框架,我们有大约35个测试用例.当我们运行testng.xml时,至少有4到5个测试用例由于过时的元素异常或在该点无法点击的元素而随机失败,等等.
在运行testng.xml时,某些测试用例是否常见失败?您的组织中运行了多少个测试用例,以及对失败的数量的估计是多少?
在启用了三叶草配置文件的情况下调用 TestNG 单元测试用例时出现以下错误。没有改变任何三叶草版本。不知道为什么会发生。
这是我的库详细信息 - clover-4.0.3、testng - 6.0.1、maven 3
Caused by: java.lang.NoClassDefFoundError: com_atlassian_clover/TestNameSniffer
at com.mds404.catalog.infrastructure.entity.ModelBase.<clinit>(ModelBase.java:27)
at sun.reflect.GeneratedSerializationConstructorAccessor1.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Constructor.java:422)
at org.objenesis.instantiator.sun.SunReflectionFactoryInstantiator.newInstance(SunReflectionFactoryInstantiator.java:40)
at org.objenesis.ObjenesisBase.newInstance(ObjenesisBase.java:59)
at org.mockito.internal.creation.jmock.ClassImposterizer.createProxy(ClassImposterizer.java:111)
at org.mockito.internal.creation.jmock.ClassImposterizer.imposterise(ClassImposterizer.java:51)
at org.mockito.internal.util.MockUtil.createMock(MockUtil.java:52)
at org.mockito.internal.MockitoCore.mock(MockitoCore.java:41)
at org.mockito.Mockito.mock(Mockito.java:1014)
at org.mockito.Mockito.mock(Mockito.java:909)
at com.mds404.rest.v2.controller.BaseControllerTest.<init>(BaseControllerTest.java:107)
... 33 more
Caused by: java.lang.ClassNotFoundException: com_atlassian_clover.TestNameSniffer
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.apache.maven.surefire.booter.IsolatedClassLoader.loadClass(IsolatedClassLoader.java:97)
... 46 more
Run Code Online (Sandbox Code Playgroud) 我对testng范围报告中的测试和步骤之间的区别感到困惑.
我有2个测试用例,1次通过,1次失败.在测试范围报告中:1个测试通过1个测试失败,0个其他测试失败,步骤:1个步骤通过2个步骤失败,0个其他
那么有人会澄清两者之间有什么区别吗?
附加代码段和testng范围报告
@Test
public void demoTestPass()
{
test = extent.createTest("demoTestPass", "This test will demonstrate the PASS test case");
Assert.assertTrue(true);
}
@Test
public void demoTestFail()
{
test = extent.createTest("demoTestFail", "This test will demonstrate the FAIL test case");
Assert.assertEquals("Hi", "Hello");
}
Run Code Online (Sandbox Code Playgroud)
请点击此处查看范围报告.
任何澄清将非常感激.
我试图以编程方式启动appium服务器,但遇到错误。如何解决这个问题?我已经安装了nodejs和appium,并且正确设置了environemnt变量。我正在使用Maven Appium Java客户端6.1.0和Selenium 3.14.0。请帮助。十亿感谢您的帮助。
码:
try {
File appDir = new File(System.getProperty("user.dir"));
File app = new File(appDir, "..\\apk\\Flipkart.apk");
// apk Capabilities
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability("deviceName", "Sony Xperia Z2");
caps.setCapability("BROWSER_NAME", "Android");
caps.setCapability("platformVersion", "6.0");
caps.setCapability(MobileCapabilityType.PLATFORM_NAME, Platform.ANDROID);
//caps.setCapability("udid", "WUJ01N4RQ3"); // DeviceId from "adb devices" command
caps.setCapability("platformName", "Android");
caps.setCapability("app", app.getAbsolutePath());
caps.setCapability("appPackage", "com.flipkart.android");
caps.setCapability("appActivity","com.flipkart.android.SplashActivity");
// Appium Capabilities
caps.setCapability("skipUnlock","true");
caps.setCapability("noReset","false");
appiumBuilder = new AppiumServiceBuilder();
appiumBuilder.withIPAddress("127.0.0.1");
appiumBuilder.usingPort(47233);
appiumBuilder.withCapabilities(caps);
appiumBuilder.withStartUpTimeOut(3, TimeUnit.MINUTES);
appiumBuilder.withLogFile(new File(System.getProperty("user.dir") + "\\log\\appium.log"));
appiumBuilder.withArgument(GeneralServerFlag.SESSION_OVERRIDE);
appiumBuilder.withArgument(GeneralServerFlag.LOG_LEVEL, "DEBUG");
appiumBuilder.withArgument(GeneralServerFlag.ASYNC_TRACE, "true");
appiumServer = AppiumDriverLocalService.buildService(appiumBuilder);
appiumServer.start();
//new URL("http://127.0.0.1:47233/wd/hub") …Run Code Online (Sandbox Code Playgroud) 以下是源文件的组织方式
?-1 ~/Go/src/github.com/krmahadevan/packages
18:24 $ tree .
.
??? sample_main.go
??? sample_one.go
0 directories, 2 files
Run Code Online (Sandbox Code Playgroud)
下面是源代码的样子:
sample_one.go
?-1 ~/Go/src/github.com/krmahadevan/packages
18:24 $ tree .
.
??? sample_main.go
??? sample_one.go
0 directories, 2 files
Run Code Online (Sandbox Code Playgroud)
sample_main.go
package main
var data map[string]string
func init() {
data = make(map[string]string, 0)
}
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试运行sample_main.go 时,出现错误,指出data未定义。
18:24 $ go run sample_main.go
# command-line-arguments
./sample_main.go:6:2: undefined: data
./sample_main.go:7:14: undefined: data
?-2 ~/Go/src/github.com/krmahadevan/packages
Run Code Online (Sandbox Code Playgroud)
但是当我将代码构建成二进制文件然后执行它时,它运行良好。
? ~/Go/src/github.com/krmahadevan/packages
18:27 $ go build
? ~/Go/src/github.com/krmahadevan/packages
18:28 $ ./packages …Run Code Online (Sandbox Code Playgroud) 我使用Maven运行Selenium Testng测试,但是我试图创建可执行jar,因此其他团队成员只需简单的设置即可从其桌面运行自动化套件。
因此,我添加了一个主要的“运行器”方法来创建可执行jar。
public class LaunchTests {
public static void main(String[] args) {
TestListenerAdapter tla = new TestListenerAdapter();
TestNG testng = new TestNG();
List<String> suites = new ArrayList();
suites.add("testng.xml");//path to xml..
testng.setTestSuites(suites);
testng.run();
}
Run Code Online (Sandbox Code Playgroud)
}
我最好的猜测是需要向POM.xml中添加一些内容吗?
从eclipse手动运行testng测试或使用mvn clean测试(Surefire插件)运行它们时,它们可以完美运行。但是当尝试以Java程序运行时出现此错误。
Exception in thread "main" org.testng.TestNGException:
Cannot find class in classpath: package.TestOne
at org.testng.xml.XmlClass.loadClass(XmlClass.java:81)
at org.testng.xml.XmlClass.init(XmlClass.java:73)
at org.testng.xml.XmlClass.<init>(XmlClass.java:59)
at org.testng.xml.TestNGContentHandler.startElement(TestNGContentHandler.java:548)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.emptyElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown …Run Code Online (Sandbox Code Playgroud) 我使用了 @BeforeTest 和 @AfterTest 注释。请找到下面的代码
WebDriverFactory wd = new WebDriverFactory();
//@Parameters({"browserName","appURL"})
@BeforeTest
public void setBrowser(String browserName, String appURL){
wd.setDriver("chrome", "https:URL");
}
@AfterTest
public void tearDown()
{
wd.closeBrowser();
}
Run Code Online (Sandbox Code Playgroud)
并低于错误
AILED 配置:@BeforeTest setBrowser org.testng.TestNGException:只能注入其中之一到 BeforeTest 注释的 setBrowser。有关本机依赖项注入的更多信息,请参阅http://testng.org/doc/documentation-main.html#native-dependency-injection at org.testng.internal.Parameters.checkParameterTypes(Parameters.java:244) at org .testng.internal.Parameters.createParameters(Parameters.java:172)
是否可以与JUnit 5并行执行测试用例?
我正在寻找类似的东西threadPoolSize,并invocationCount从TestNG的:
@Test(threadPoolSize = 3, invocationCount = 10, timeOut = 10000)
Run Code Online (Sandbox Code Playgroud) 下面是我的XML文件和Demo Class.Precondition()方法将在demo1()方法之前运行,而postCondition()方法将在demo1()方法之后运行.同样的过程适用于demo2().但是当我运行代码时,不会调用BeforeSuite和BeforeTest方法.为什么.?怎么称呼他们?
Output :
Before Method is executing
DEMO -1
After Method is executing
Before Method is executing
DEMO 2
After Method is executing
Run Code Online (Sandbox Code Playgroud)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<test name="Test">
<groups>
<run>
<include name = "Hey"></include>
</run>
</groups>
<classes>
<class name="practicepackage.Demo"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
Run Code Online (Sandbox Code Playgroud)
package practicepackage;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.BeforeSuite;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
public class Demo {
@BeforeSuite
public void beforeSuite(){
System.out.println("Before Suite method is being …Run Code Online (Sandbox Code Playgroud) 我已经尝试设置 chromedriver 权限并将其标记为可执行文件。我也设置了 PATH 变量,但仍然出现此错误。我还可以采取哪些其他步骤来解决问题?我在 EC2 Linux 实例上使用 Git 运行 Jenkins。
java.lang.IllegalStateException: The driver is not executable: /var/lib/jenkins/workspace/Selenium TestNG ANT Build - Git/chromedriver.exe
at com.google.common.base.Preconditions.checkState(Preconditions.java:534)
at org.openqa.selenium.remote.service.DriverService.checkExecutable(DriverService.java:140)
at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:131)
at org.openqa.selenium.chrome.ChromeDriverService.access$000(ChromeDriverService.java:32)
at org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:137)
at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:339)
at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:88)
at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:123)
at WebDriver.TestNGScript.beforeTestsetUp(Unknown Source)
... Removed 22 stack frames
Run Code Online (Sandbox Code Playgroud)