Java 无法仅在未调用Before、After和Test Methods函数之前和之后执行套件之前和之后使用dockerFile运行测试文件
DockerFileJava 无法仅在未调用Before、After和Test Methods函数之前和之后执行套件之前和之后使用dockerFile运行测试文件,java,docker,selenium-webdriver,dockerfile,testng,Java,Docker,Selenium Webdriver,Dockerfile,Testng,DockerFile 来自openjdk:8-jre-slim WORKDIR/usr/share/tag 添加目标/selenium-docker.jar selenium-docker.jar addtarget/selenium-docker-tests.jar selenium-docker-tests.jar 添加目标/libs libs 添加src/test/resources/TestSuite/dev_env/testng.xml testng.xml entrypointjav
来自openjdk:8-jre-slim
WORKDIR/usr/share/tag
添加目标/selenium-docker.jar selenium-docker.jar
addtarget/selenium-docker-tests.jar selenium-docker-tests.jar
添加目标/libs libs
添加src/test/resources/TestSuite/dev_env/testng.xml testng.xml
entrypointjava-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>
我使用maven将所有依赖项复制到libs包中,并且我已经验证了我为main和test编译的所有类都存在于selenium-docker.jar和selenium-docker-tests.jar中
我为创建selenium-docker.jar和selenium-docker-tests.jar运行的命令:
mvn清洁包-DskipTests
用于创建Docker映像的命令:
docker构建-t selenium\u docker:1.0.
运行测试的命令:
docker运行selenium\u docker:1.0
输出
@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());
}
}
[调试]2020-01-24 16:50:48.989[主]OneInstance-OneInstance正在运行
空初始化它
[信息]2020-01-24 16:50:49.123[主]基本测试-在套件启动之前
叫
[信息]2020-01-24 16:50:49.129[测试NG-tests-2]测试监听器-我是
启动方法中的色度测试
[信息]2020-01-24 16:50:49.131[测试]测试监听器-我是
在onStart方法FireFoxTests中
[信息]2020-01-24 16:50:49.134[主]基本测试-驾驶员内部
清理
===============================================
套房1
运行的测试总数:0,通过率:0,失败率:0,跳过率:0
在输出中,我们可以看到调用套件之前的。但是调用方法之前的。丢失了我通过更正项目中的文件路径解决了问题。在本地运行时,我使用了基于windows的路径,但由于我的测试是在unix系统中运行的,所以出现了一个异常,在更正这些路径后,测试无法工作,所以工作正常。我将(\替换为/),这样它在windows和Unix系统中都能工作。我尝试使用TestNG
7.1.0
复制此问题,但无法复制。我可以在调用方法之前看到。请您将docker排除在等式之外,并尝试使用TestNG的最新发布版本(7.1.0
截至今天)复制此问题@KrishnanMahadevan感谢您的关注。我使用的是TestNG7.0.0
,使用maven时效果很好。根据你的建议,我尝试了7.1.0
,而maven的效果太好了。只有在使用DockerFile运行myproject时,我才面临上述问题,否则它工作得非常顺利。您能否在GitHub上创建一个简单的项目以及docker文件,并共享问题中的项目链接?让我看看是否可以试试看到底发生了什么。@KrishnanMahadevan这里是我项目的链接。我还没有更新自述。一些信息:所有xml都在test/resources/TestSuite中运行项目:mvn test-DsuiteXmlFile=dev_env/testng.xml。如果需要更多细节,请告诉我。