我正在尝试使用命令行中的 TestNG.xml 在 Gradle 上运行 Selenium Java 测试(jar 文件)构建。
注意:我能够从 IntelliJ 成功运行测试用例。
但是当我将项目打包在 .jar 文件中并尝试从 CLI(Windows 11 powershell)运行它时,它会抛出错误。
运行以下代码
java -cp untitled-0.1-all.jar org.testng.TestNG Testng.xml
出现此错误:
[主要] 错误 org.testng.TestNG - 无法在类路径中找到类: com.xyz.Test1
项目结构和代码。
测试1类代码:
它是一个简单的测试类,使用 selenium 打开 chrome 浏览器并验证页面标题。
package com.xyz;
import com.google.common.util.concurrent.Uninterruptibles;
import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.Assert;
import org.testng.annotations.Test;
import java.time.Duration;
public class Test1 {
@Test
public void test() {
System.out.println(">>>>>>>>>>>>> Starting the test");
//Opening the Chrome brower
WebDriverManager.chromedriver().setup();
WebDriver driver = new ChromeDriver();
//Opening google page and verifying the title
driver.get("https://www.google.com");
Uninterruptibles.sleepUninterruptibly(Duration.ofSeconds(10));
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, "Google");
//Close the chrome browser
driver.quit();
System.out.println(">>>>>>>>>>>>> Ending the test");
}
}
Testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite">
<test name="Test">
<classes>
<class name="com.xyz.Test1" />
</classes>
</test>
</suite>
build.gradle
plugins {
id 'java'
id 'java-library'
id 'com.github.johnrengelman.shadow' version '8.1.1'
}
group = 'xyz'
version = '0.1'
repositories {
mavenCentral()
}
shadowJar {
// Include test resources
from 'src/test/resources'
// Include test code
from 'src/test/java'
}
dependencies {
//Add impementation & testImplementation as was not sure if this was the source of problem.
implementation 'org.seleniumhq.selenium:selenium-java:4.26.0'
implementation 'org.testng:testng:7.10.2'
implementation 'org.slf4j:slf4j-simple:2.0.9'
implementation 'io.github.bonigarcia:webdrivermanager:5.8.0'
testImplementation 'org.testng:testng:7.10.2'
testImplementation 'org.seleniumhq.selenium:selenium-java:4.26.0'
testImplementation 'io.github.bonigarcia:webdrivermanager:5.8.0'
}
jar {
manifest {
attributes 'Main-Class': 'com.xyz.Test1'
}
}
test {
useTestNG()
}
从 powershell (Windows 11) 运行以下命令:
> gradle clean
> gradle shadowJar
然后运行以下命令
> java -cp .\build\libs\untitled-0.1-all.jar org.testng.TestNG .\src\test\resources\Testng.xml
出现此错误
[main] ERROR org.testng.TestNG -
Cannot find class in classpath: com.xyz.Test1
我进一步检查了.Jar文件,它包含com.xyz.Test1类(下面的屏幕截图供参考)
如果没有要测试的东西,一个人可能无法进行测试......
而资源名称
testng.xml
必须小写。