【问题标题】:Running automated Selenium web driver UI tests using JAVA in Azure Devops CI/CD pipelines在 Azure Devops CI/CD 管道中使用 JAVA 运行自动化 Selenium Web 驱动程序 UI 测试
【发布时间】:2020-05-12 16:33:36
【问题描述】:
我有一个 JAVA spring boot 应用程序。我在同一个项目中使用 Selenium Web Driver 进行了 JUnit 单元测试和功能测试。
我想在 Azure DevOps 管道中自动化这些测试。
到目前为止,我所做的是:
在构建管道中设置一个 Maven 任务来自动化单元测试。
问题说明:如何在发布管道中设置 Selenium UI 测试。
Microsoft 文档讨论了 VsTest 任务。但是 Java 项目不支持此任务。
我错过了什么?
【问题讨论】:
标签:
java
spring-boot
maven
selenium-webdriver
azure-devops
【解决方案1】:
问题陈述:如何在 Release 中设置 Selenium UI 测试
管道。
您仍然可以使用 Maven 任务在发布管道中运行 Selenium UI 测试。没有可用于直接实现您想要的任务的任务。但作为一种解决方法,您可以考虑在构建中使用 Copy task 和 Publish Build Artifacts 任务,然后使用第二个 Maven 任务来运行这些 Selenium UI 测试。
您可能会从similar issue 获得有用的信息。
【解决方案2】:
在 Azure DevOps Pipeline 中,您只需要 Maven 任务。确保在 pom.xml 中添加了所有依赖项和插件。
对于特定的测试类编辑 Maven 任务中的目标:
package -Dtest=NAMEOFYOURTESTCLASS test -f pom.xml
在创建管道之前,您可以在工作室中对其进行测试。在 IntelliJ IDEA 中,您可以创建一个运行配置并将上述相同的命令粘贴到命令行部分。
另外,这个Article 很好地解释了如何正确设置 Maven 项目。
【解决方案3】:
在发布管道中,您可以使用bash script 任务通过headless chrome 执行 selenium UI 自动化测试。
1) 首先,在 build 或 release agent 中安装 chrome 浏览器和 Web 驱动程序。您可以使用 Microsoft 托管代理或自托管代理。您的所有管道都需要至少一名代理来完成这项工作。
2) 从源代码管理中克隆功能测试存储库。
3) 运行 MVN 测试命令
确保您在构建代理上安装了相同版本的 chrome web 驱动程序和 chrome web 浏览器。
在无头模式下运行功能测试需要以下属性。
ChromeOptions options = new ChromeOptions();
options.addArguments("headless");
并添加网络驱动的路径,
System.setProperty("webdriver.chrome.driver", "/usr/bin/chromedriver");
您可以在此处遵循 Azure 管道bash task 的示例脚本
apt-get update
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb; apt-get -fy install
wget https://chromedriver.storage.googleapis.com/84.0.4147.30/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
sudo mv chromedriver /usr/bin/chromedriver
sudo chmod +x /usr/bin/chromedriver
git clone https://repo_url/functionalTests
cd functionalTests
mvn test