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>
BaseTest
@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());
}
}
Все мои зависимости скопированы в пакет libs с использованием maven, а также я проверил все мои скомпилированные классы для main и test, присутствующие в selenium- docker .jar и selenium- docker -tests.jar
Команда I, запущенная для создания селена- 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 нулевой инициализировать его ....
[INFO] 2020-01-24 16: 50: 49.123 [main ] BaseTest - до вызова Suite ...
[INFO] 2020-01-24 16: 50: 49.129 [TestNG-tests-2] TestListeners - я в методе onStart Chro meTests
[INFO] 2020-01-24 16: 50: 49.131 [TestNG-tests-1] TestListeners - я в методе onStart FireFoxTests
[INFO] 2020-01-24 16 : 50: 49.134 [main] BaseTest - Очистка внутреннего драйвера
================================== ================== Suite1
Всего выполнено тестов: 0, пройдено: 0, сбоев: 0, пропущено: 0
на выходе мы можем видеть до вызова Suite ... , но до вызова метода .. отсутствует