gpt4 book ai didi

java - 无法仅使用 dockerFile 运行测试文件 在执行套件之前和之后 未调用之前、之后和测试方法函数

转载 作者:太空宇宙 更新时间:2023-11-04 09:08:54 25 4
gpt4 key购买 nike

DockerFile

FROM openjdk:8-jre-slim

WORKDIR /usr/share/tag

ADD target/selenium-docker.jar selenium-docker.jar

ADD target/selenium-docker-tests.jar selenium-docker-tests.jar

ADD target/libs libs

ADD src/test/resources/TestSuite/dev_env/testng.xml testng.xml

ENTRYPOINT java -cp selenium-docker.jar:selenium-docker-tests.jar:libs/* org.testng.TestNG testng.xml

testng.xml

<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="Suite1" verbose="1" parallel="tests" thread-count="2">
<parameter name="env" value="dev_env"/>
<parameter name="system" value="local"/>
<listeners>
<listener class-name="com.testlisteners.TestListeners"/>
</listeners>
<test name="FireFoxTests">
<parameter name="browser" value="firefox"/>
<classes>
<class
name="com.tests.HomePageTest">
<methods>
<include name= "testMultiSelectDropdown"/>
</methods>
</class>
</classes>
</test>
<test name="ChromeTests">
<parameter name="browser" value="chrome"/>
<classes>
<class name="com.tests.HomePageTest">
<methods>
<include name= "testMultiSelectDropdown"/>
</methods>
</class>
</classes>
</test>
</suite>

基础测试

@BeforeSuite
@Parameters({"env", "system"})
public void preSetup(String env, String system) throws IOException {
this.env = env;
this.system = system;
logger.info("Before Suite is called...");
oneInstance.add(KEYS.ENVIRONMENT, env);
oneInstance.add(KEYS.SYSTEM, system);
}



@BeforeMethod(alwaysRun = true)
@Parameters({"browser"})
public void setup(String browser, Method method) throws IOException {
logger.info("Before Method is called..");
String toLowercaseBrowser = browser.toLowerCase();
this.browser = toLowercaseBrowser;
logger.info(toLowercaseBrowser + " browser will be launched.");
ExtentTestManager.startTest(method.getName(), method.getName() + " - " + browser.toUpperCase());

if (oneInstance.getAsString(KEYS.SYSTEM.name()).equalsIgnoreCase("local")) {
switch (toLowercaseBrowser) {
case "chrome":
WebDriverManager.chromedriver().setup();
driver.set(new ChromeDriver(setChromeOptions()));
getDriver().manage().window().fullscreen();
getDriver().get(setAppURL());
break;
case "firefox":
WebDriverManager.firefoxdriver().setup();
driver.set(new FirefoxDriver());
getDriver().manage().window().fullscreen();
getDriver().get(setAppURL());
break;
default:
throw new InvalidArgumentException("browser : " + browser + " is invalid.");
}
} else {
instantiateRemoteWebDriver(toLowercaseBrowser);
getDriver().manage().window().fullscreen();
getDriver().get(setAppURL());
}

}

我使用 maven 将所有依赖项复制到 libs 包中,并且我还验证了 main 和 test 的所有已编译类都存在于 selenium-docker.jar 和 selenium-docker-tests.jar 中

我运行用于创建 selenium-docker.jar 和 selenium-docker-tests.jar 的命令: mvn clean package -DskipTests

我用来创建 Docker 镜像的命令: docker build -t selenium_docker:1.0 .

运行测试的命令: docker run selenium_docker:1.0

输出

[DEBUG] 2020-01-24 16:50:48.989 [main] OneInstance - OneInstance is null intialize it....

[INFO ] 2020-01-24 16:50:49.123 [main] BaseTest - Before Suite is called...

[INFO ] 2020-01-24 16:50:49.129 [TestNG-tests-2] TestListeners - I am in onStart method ChromeTests

[INFO ] 2020-01-24 16:50:49.131 [TestNG-tests-1] TestListeners - I am in onStart method FireFoxTests

[INFO ] 2020-01-24 16:50:49.134 [main] BaseTest - Inside driver cleanUp

==================================================套房1

运行的测试总数:0,通过:0,失败:0,跳过:0

在输出中,我们可以看到调用套件之前...,但缺少调用方法之前...

最佳答案

我通过更正项目中的文件路径解决了问题。在本地运行时,我使用了基于 Windows 的路径,但由于我的测试是在 unix 系统中运行,因此出现异常,因为在更正这些路径后测试无法正常工作,但它工作正常。我将 (\替换为/),这样它就可以在 Windows 和 Unix 系统中工作。

关于java - 无法仅使用 dockerFile 运行测试文件 在执行套件之前和之后 未调用之前、之后和测试方法函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59900800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com