我们应该在java测试文件夹还是主文件夹中编写testng selenium代码?

我们应该在java测试文件夹还是主文件夹中编写testng selenium代码?,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,我正在编写一组selenium测试,我想构建一个jar并在docker上运行,我正在做一个基于maven的项目 在大多数视频教程中,我看到这些测试都写在test文件夹中。 但是在这种情况下,这个构建是否会添加到jar文件中,我是否能够执行这些呢 什么是测试selenium项目的适当文件夹结构?是的,它将基于您的pom.xml构建配置 <build> <finalName>testProject</finalName> <plugins> &

我正在编写一组selenium测试,我想构建一个jar并在docker上运行,我正在做一个基于maven的项目

在大多数视频教程中,我看到这些测试都写在test文件夹中。 但是在这种情况下,这个构建是否会添加到jar文件中,我是否能够执行这些呢


什么是测试selenium项目的适当文件夹结构?

是的,它将基于您的pom.xml构建配置

<build>
<finalName>testProject</finalName>
<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
        <configuration>
            <compilerVersion>1.8</compilerVersion>
            <source>1.8</source>
            <target>1.8</target>
            <testSource>1.8</testSource>
            <testTarget>1.8</testTarget>
        </configuration>
    </plugin>
    <plugin>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.6</version>
        <executions>
            <execution>
                <id>copy-resources</id>
                <phase>validate</phase>
                <goals>
                    <goal>copy-resources</goal>
                </goals>
                <configuration>
                    <outputDirectory>${project.build.directory}</outputDirectory>
                    <resources>
                        <resource>
                            <directory>src/main/resources</directory>
                        </resource>
                    </resources>
                </configuration>
            </execution>
        </executions>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
            <execution>
                <id>copy-dependencies</id>
                <phase>prepare-package</phase>
                <goals>
                    <goal>copy-dependencies</goal>
                </goals>
                <configuration>
                    <outputDirectory>
                        ${project.build.directory}/libs
                    </outputDirectory>
                </configuration>
            </execution>
        </executions>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.1.0</version>
        <executions>
            <execution>
                <goals>
                    <goal>test-jar</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
</plugins>

测试项目
org.apache.maven.plugins
maven编译器插件
3.7.0
1.8
1.8
1.8
1.8
1.8
maven资源插件
2.6
复制资源
验证
复制资源
${project.build.directory}
src/main/resources
org.apache.maven.plugins
maven依赖插件
复制依赖项
准备包装
复制依赖项
${project.build.directory}/libs
org.apache.maven.plugins
maven jar插件
3.1.0
试验罐

最后一节特别告诉maven包含测试类[在其中编写测试脚本]并构建测试jar

你可以通过写来执行它

java -cp testProject.jar:testProject-tests.jar:libs/*<other parameters like testNG suite or host etc>
java-cp testProject.jar:testProject tests.jar:libs/*

当我使用页面对象框架时,我更喜欢在
src->main
中分离和编写页面类,在
src Test

中编写测试类。您可以将文件夹结构保持为标准的maven结构。打包时,使用maven assembly插件创建fat jar,该插件将包含来自main和测试文件夹的所有类

在POM.XML中

 <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <descriptor>src/main/assembly/assembly.xml</descriptor>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19.1</version>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
        </plugins>
</build>
<assembly
    xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd">
<id>fat-tests</id>
<formats>
    <format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<dependencySets>
    <dependencySet>
        <outputDirectory>/</outputDirectory>
        <useProjectArtifact>true</useProjectArtifact>
        <unpack>true</unpack>
        <scope>test</scope>
    </dependencySet>
</dependencySets>
<fileSets>
    <fileSet>
        <directory>${project.build.directory}/test-classes</directory>
        <outputDirectory>/</outputDirectory>
        <includes>
            <include>**/*.class</include>
        </includes>
        <useDefaultExcludes>true</useDefaultExcludes>
    </fileSet>
    <fileSet>
        <directory>${project.build.directory}/test-classes</directory>
        <outputDirectory>/</outputDirectory>
        <includes>
            <include>**/*.xml</include>
        </includes>
        <useDefaultExcludes>true</useDefaultExcludes>
    </fileSet>
</fileSets>
FROM openjdk:8-jre-alpine
ADD testng-maven-1.0-SNAPSHOT-fat-tests.jar /
CMD java -cp testng-maven-1.0-SNAPSHOT-fat-tests.jar org.testng.TestNG -testjar testng-maven-1.0-SNAPSHOT-fat-tests.jar -groups unit