从testng.xml文件中的其他路径运行测试类

时间:2014-06-19 03:47:20

标签: java maven intellij-idea

我在TestNG,Maven& amp;的IntelliJ。我创建了一个新的maven项目,并定义了一个“测试版”' src / main / java下的类。如果我在src / main / java下指定测试类,我可以通过testng.xml运行测试用例。

但是,我想在src / test / java中指定我的测试类。如果我指定任何测试类' test1.java'在src / test / java和run下,它给出了错误: 错误: 在classpath中找不到类:java / test1

我已经尝试过的解决方法:

  1. 在testng.xml文件中,给出测试用例的完整路径 - 从/ Users /开始(注意:我正在使用MAC)
  2. 在testng.xml文件中,给出测试用例的完整路径 - 从src /
  3. 开始
  4. 在maven-surefire-plugin下的pom.xml中指定了额外的类路径(此处我还指定了完整路径,项目基目录路径等)。
  5. 我试图清除缓存,但没有区别
  6. 其他观察:

    当我在testng.xml文件中指定路径时,Intellij向我显示错误。它为我提供了创建XXXX类的选项。当我点击创建类时 - 它给了我2个位置(src / main / java& src / test / java)。我已经在src / test / java下有各自的测试类。为什么不接受?

    我试图在Mac上检查我的类路径,但我没有取得多大成功。

    任何帮助将不胜感激。

    由于

    根据评论,编辑我的问题。指定我的代码详细信息。

    我想从TestNG类调用testng.xml文件。这是我的TestNG类: src / main / java中的runtests.java

    public static TestNG testng;

    public static void main(String[] args) {
    
        try {
    
            testng = new TestNG();
            testng.setPreserveOrder(true);
            testng.setVerbose(0);
            testng.setTestSuites(Arrays.asList("config/testng.xml"));
            testng.run();
            }
         catch (Exception e) {
            //Catch exception if any
            System.err.println("Error: " + e.getMessage());
        }
    
        }
    

    我想这样做的原因是,我想创建maven构建,我想指定可编辑的testng.xml给用户。因此,如果有人只想运行1个测试用例,他们可以编辑testng.xml并只运行1个测试用例。

    这是我在config / testng.xml

    中的testng.xml

    套件名称="测试"冗长=#&34; 0"
        测试名称="测试1"
            班
                class name =" java / test1"
            班
     测试

    这里的类名,我无法从其他位置添加类。我只能指定src / main / java中提到的类。我想指定src / test / java中提到的类。

    还有一件事,我想做的是:我想创建一个配置文件,它将与build一起使用并且可以编辑。因此,如果用户想要编辑配置(即更改服务器名称等),用户可以编辑配置文件并运行测试用例。

1 个答案:

答案 0 :(得分:0)

首先,您应该将您的单元测试找到*Test.javaTest*.javaTestCase*.java,并将其命名为Maven src/test/java中的相应文件夹。此外,您永远不应该在Maven项目中定义完整路径,如果您使用的是Mac / Linux / Windows Box或其他任何内容,则无关紧要。

因此,作为示例,文件夹布局如下所示:

.
├── pom.xml
└── src
    ├── main
    │   └── java
    │       └── com
    │           └── soebes
    │               └── training
    │                   └── maven
    │                       └── simple
    │                           └── BitMask.java
    └── test
        ├── java
        │   └── com
        │       └── soebes
        │           └── training
        │               └── maven
        │                   └── simple
        │                       └── BitMaskTest.java
        └── resources
            └── log4j.properties

此外,您不需要在maven-surefire-plugin配置中定义补充类路径,如果您将上面示例中的单元测试定位到正确的位置,它将在没有任何补充配置的情况下工作。

如果你想使用TestNG,你可以简单地在你的pom文件中添加一个依赖项,并使用这样的范围测试:

<dependency>
  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>
  <version>6.8.8</version>
  <scope>test</scope>
</dependency>

除此之外,您不需要任何testng.xml文件或任何其他配置文件来运行Maven,IntelliJ或Eclipse的单元测试。您只需使用以下命令行运行测试(建议您在进入IDE之前先测试):

mvn clean package

您也不需要配置maven-surefire-plugin,这将开箱即用。