java - 如何为 Selenium 测试创建可运行的 jar

标签 java selenium gradle junit5

我正在使用 JUnit 5 和 Selenium 进行测试。
我需要创建一个 jar 文件,该文件在执行时会打开浏览器并执行测试用例。

我从这个视频中发现:How to Create Runnable Jar File From Selenium Project
使用 TestNG 您可以创建一个对象,设置所需的测试类并运行测试类,但我还没有找到使用 JUnit5 执行此操作的等效方法

我知道使用 JUnit 平台启动器,您可以使用以下代码运行测试,但这在执行 jar 文件时不起作用,因为 JUnit 任务本身不执行测试,只捕获输出。至少那是我从 JUnit Launcher Task 中读到的内容

public class TestExecutor {
    public static void main(String args[]) {
          final LauncherDiscoveryRequest request =
                LauncherDiscoveryRequestBuilder.request()
                        .selectors(selectClass(MyTest.class))
                        .build();
        final Launcher launcher = LauncherFactory.create();
        launcher.execute(request);
    }
}

有没有办法创建一个可执行的 jar 文件来打开浏览器并执行 selenium 测试?

最佳答案

1.实现一个任务计时器。(没有代码,也许使用quaze)
2.实现一个web到手动触发。(使用springboot webmvc)

import org.junit.platform.launcher.Launcher;
import org.junit.platform.launcher.LauncherDiscoveryRequest;
import org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder;
import org.junit.platform.launcher.core.LauncherFactory;
import org.junit.platform.launcher.listeners.SummaryGeneratingListener;
import org.junit.platform.launcher.listeners.TestExecutionSummary;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.FileNotFoundException;

import static org.junit.platform.engine.discovery.ClassNameFilter.includeClassNamePatterns;
import static org.junit.platform.engine.discovery.DiscoverySelectors.selectPackage;

@RestController
@RequestMapping("/excutor")
public class ExcutorContrller {

    @GetMapping("/")
    public String excute(String packageName, String className) throws FileNotFoundException {
        new Thread(() -> {
            System.out.println(packageName + "======" + className);
            LauncherDiscoveryRequest request = LauncherDiscoveryRequestBuilder
                    .request()
                    .selectors(
                            selectPackage(packageName)
//                        selectClass(com.wusuiwei.cases.JunitTest.class)
                    )
                    .filters(
                            includeClassNamePatterns(".*Test")
                    )
                    .build();
            Launcher launcher = LauncherFactory.create();
            // Register a listener of your choice
            SummaryGeneratingListener listener = new SummaryGeneratingListener();
            launcher.registerTestExecutionListeners(listener);
            launcher.execute(request);

            TestExecutionSummary summary = listener.getSummary();
            System.out.println(summary);
            // Do something with the TestExecutionSummary.
        });

        return "excuting....";
    }
}

关于java - 如何为 Selenium 测试创建可运行的 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61876963/

相关文章:

java - 我无法从 JSON 数组获取图像字节,有人可以帮助我吗?

未为任务启用Gradle构建缓存

java - 使用 Selenium 处理刷新 WebElement

python - 是否可以在selenium webdriver python中获取iframe的内容?

java - Android编译错误;已应用Java插件,不兼容android

grails - gradle 属性文件位于 gradle 项目中的哪里?

java - jUnit 使用 File 函数时出现 NullPointerException

java - 一对一关系 hibernate 导致许多查询

java - 错误 : JUnit command line test classes inside the jar

python - Selenium webdriver - 可以找到元素但不可见?