Невозможно запустить тестовый файл только с использованием dockerFile До и после того, как наборы выполняются До, после и после Методы тестирования не запускаются - PullRequest
1 голос
/ 24 января 2020

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 ... , но до вызова метода .. отсутствует

1 Ответ

0 голосов
/ 27 января 2020

Я выяснил проблему, исправив пути к файлам в моем проекте. при локальном запуске я использовал путь на основе windows, но поскольку мой тест выполнялся в системе unix, возникла исключительная ситуация, из-за которой тест не работал после исправления этих путей, он работал нормально. Я заменил (\ на /), чтобы он работал как в windows, так и в Unix системе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...