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

n6lpvg4x  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(373)

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 输出
[调试]2020-01-24 16:50:48.989[main]oneinstance-oneinstance为空初始化它。。。。
[信息]2020-01-24 16:50:49.123[main]basetest-在调用套件之前。。。
[信息]2020-01-24 16:50:49.129[testng-tests-2]testlisteners-我正在使用onstart方法chrometests
[信息]2020-01-24 16:50:49.131[testng-tests-1]testlisteners-我正在使用onstart方法firefoxtests
[信息]2020-01-24 16:50:49.134[主要]basetest-内部驱动程序清理
=========================================================套房1

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

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

wqlqzqxt

wqlqzqxt1#

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

相关问题