当前位置: 首页 > 知识库问答 >
问题:

Maven项目:能够用TestNG测试单独运行单个测试,但不能用Maven测试运行整个项目

呼延升
2023-03-14

我有一个Maven项目,所有的配置都是正确的,最近我用GIT和Jenkins配置了这个项目,创建了Jenkin作业。

早些时候,我可以通过右键单击project并运行**-->**Run-->Maven test和test execution use来启动整个项目,但现在它不会抛出任何错误,而是不会启动浏览器来执行。

但是,如果我使用TestNG单独运行Java文件[单个测试用例],它就会按照预期工作[启动浏览器并开始执行]

正如我用Jenkins配置的那样,我不能单独运行每个测试用例。我将不得不用Maven测试运行该项目

我试过可能的解决办法:

  1. 清理项目+删除m2文件夹+Maven运行[只是为了确保它不指向任何旧的jar文件]-->对我不起作用

请找到我在pom.xml中使用过的代码段。

null

 

提前感谢所有的建议:)


共有2个答案

百里骏
2023-03-14
  1. 创建一个testNG xml并在其中包含所有测试类。这可以通过包含顶层包来实现:
<test name="sample-Test" preserve-order="true" verbose="2">
    <packages>
        <package name="org.sample.something.*"/>
    </packages>
</test>

null

2.1更新surefire插件配置,使其:

        <configuration>
           <suiteXmlFiles>
               <suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
           </suiteXmlFiles>
        </configuration>

2.2或(更灵活,因为您可以创建指向不同xml的不同配置文件,以分别运行不同的测试套件)创建一个指向您的testNG xml的maven配置文件

     <profiles>
       <profile>
          <id>selenium-tests</id>
          <build>
             <plugins>
                <plugin>
                   <groupId>org.apache.maven.plugins</groupId>
                   <artifactId>maven-surefire-plugin</artifactId>
                   <version>2.19.1</version>
                   <configuration>
                      <suiteXmlFiles>
                         <suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
                      </suiteXmlFiles>
                   </configuration>
                </plugin>     
             </plugins>
          </build>
       </profile>
    </profiles>

maven的源代码

xml源

封昊天
2023-03-14

为了追踪原因,你可以通过下面的步骤。你会发现真正的原因是什么,它会被卡住。

1.创建带有控制台输出的Simple@Test:

public class NewTest {
  @Test
  public void f() {
      System.out.println("Hello World");
  }
}

2.在项目的根位置创建testng.xml以执行以上类:

<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
    <suite name="Suite">
      <test thread-count="5" name="Test">
        <classes>
          <class name="packageName.NewTest"/>
        </classes>
      </test> <!-- Test -->
    </suite> <!-- Suite -->

3.运行并检查testng.xml输出

4.运行并检查pom.xml的输出

pom.xml:

  <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.22.0</version>
            <configuration>
                <suiteXmlFiles> 
                    <suiteXmlFile>testng.xml</suiteXmlFile>
                </suiteXmlFiles>
            </configuration>
        </plugin>
  </plugins>
 类似资料:
  • 我有3个maven项目。项目1,项目2 为此,我在项目2 pom.xml文件中添加了这个 我的pom。Project3的xml是- 在项目3中,我添加了testng。xml文件来运行测试。现在如果我运行这个测试。xml文件,那么我所有的测试用例都成功运行了。如果我尝试使用maven测试运行测试用例,那么它会失败。 我已经在下面的pom文件中包含了testng.xml文件,以便使用maven运行te

  • 问题内容: 当我使用以下命令在Maven中运行单个测试时: 我得到以下结果: 它在几分钟前工作了,但是现在由于某种原因停止了工作。在运行测试之前,我尝试运行几次,但没有帮助。 测试看起来像这样: }} 更新: 这是由于将此依赖项添加到POM: 当我删除它时,一切正常。即使我添加以下两个依赖关系而不是上一个依赖关系,一切也都可以正常工作: 真奇怪 问题答案: 您可能正在类路径上的某个地方拾取了JUn

  • 我的任务是单独使用TestNG测试应用程序,该应用程序在tomcat服务器上运行。该应用程序是用JAVA编写的。我有应用程序的APIendpoint,但是如何使用POST和GET方法测试应用程序? 我想测试,例如:<代码>http://localhost:8080/sportsbetting-web/登录,我应该发布用户凭据。如何测试登录是否有效?

  • 我有一个希望通过maven运行的主类,这个主类动态创建testng.xml文件,测试就是这样开始的。但是当我通过'run as->Maven Test'运行我的项目时,我得到了'SureFireExecutionException'。下面是pom.xml: 编辑:在这里为上面的查询打开了一个新问题:无法从maven运行testNG测试

  • 是否可以通过右键单击功能文件中的各个场景而不是使用命令文件或直接运行 TestNG 运行器文件来使用 TestNG 运行器运行cucumber场景? 我使用Intellij在maven测试框架中运行cucumber场景。在POM.xml文件中,我有一个引用testNG.xml文件的Surefire插件,该文件指向TestNG runner类。 当我从终端运行“mvn test”时,它会调用 Tes

  • 在以前的一个项目中,我使用Spock测试框架对Java代码进行单元测试。我发现这非常有效,所以我尝试将Spock测试添加到我当前的项目中,该项目使用Maven作为构建工具(前一个项目使用Gradle)。虽然我可以让Maven编译我的Spock测试(使用),但我无法让Maven运行这些测试。 我做了一个简单的例子来演示我在两个文件中的问题: null 当我执行(或)时,我希望运行单个单元测试并失败。