【问题标题】:Should we write the testng selenium code in java test folder or main folder?我们应该在 java test 文件夹还是主文件夹中编写 testng selenium 代码?
【发布时间】:2019-08-05 11:11:07
【问题描述】:

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

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

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

【问题讨论】:

    标签: java selenium selenium-webdriver


    【解决方案1】:

    是的,它将基于您的 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>
    

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

    你可以通过写来执行,

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

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

    【讨论】:

      【解决方案2】:

      您可以将文件夹结构保持为标准的 Maven 结构。打包时使用 maven-assembly-plugin 创建 fat jar,其中包含 main 和 test 文件夹中的所有类。

      在 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>
      

      mvn 包

      您将获得包含所有测试依赖项和测试类的 fat jar。

      对于 TestNG 测试:在下面的示例中,我们正在运行具有组单元的测试。如果你想从命令行发送组,你可以自定义它

      例如泊坞窗文件:

      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
      

      【讨论】:

        猜你喜欢
        • 2013-04-04
        • 2021-07-16
        • 2023-03-13
        • 1970-01-01
        • 2014-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多