无法从命令行使用 testng.xml 运行 selenium jar 文件

问题描述 投票:0回答:1

我正在尝试使用命令行中的 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

项目结构和代码。

Project Structure

测试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

Jar file create after the above command

然后运行以下命令

> 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类(下面的屏幕截图供参考)

com.xyz.Test1 class file inside JAR file

java selenium-webdriver gradle jar testng
1个回答
0
投票

如果没有要测试的东西,一个人可能无法进行测试......
而资源名称

testng.xml
必须小写。

© www.soinside.com 2019 - 2024. All rights reserved.