当我运行时(Windows 7 命令行):
C:\rest-app\src\main\java\com\mycompany\app\Test>java org.testng.TestNG testng.xml
我得到:
================================================
Suite1 总测试运行:0,失败:0,跳过:0
================================================
这是我的 testng.xml 文件的样子:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1" verbose="1" >
<test name="SandBoxTests" >
<packages>
<package name="com.mycompany.app.Test" />
</packages>
</test>
</suite>
我在那个包里的班级里有三个测试。
当我将我的 testng.xml 文件更改为:
<suite name="Suite1" verbose="1" >
<test name="SandBoxTests" >
<classes>
<class name="com.mycompany.app.Test.SandBoxTests">
<methods>
<include name="com.mycompany.app.Test.SandBoxTests.TestA"/>
</methods>
</class>
</classes>
</test>
</suite>
我得到回应:
[TestNG] [错误] 在类路径中找不到类:com.mycompany.app.Test.SandBoxTests
我的类路径看起来像:
C:\rest-app\lib\ *;C:\rest-app\src\main\java\com\mycompany\app\Test\ *
第一个目录指向我包含的所有 .jar 文件,包括 testng,最后一个目录包含我试图从中运行测试的类文件的位置。我的 testng.xml 文件也在那里。
那么为什么 TestNG 似乎可以很好地找到我的包,但看不到我的课程呢?
我的代码是:
package com.mycompany.app.Test;
import com.mycompany.app.RestMethods;
import com.mycompany.app.Test.TestObjects.AutoCompleteList;
import com.mycompany.app.Test.TestObjects.AutocompleteItem;
import com.mycompany.app.Test.TestObjects.Title;
import com.thoughtworks.xstream.XStream;
import org.apache.http.HttpResponse;
import org.testng.Reporter;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
import static org.junit.Assert.assertTrue;
public class SandBoxTests
{ ...
@BeforeClass
public void SetupSandBoxTests() throws Exception
{
}
@Test
public void TestA() throws Exception
{
...
}
...
}
编辑:我更新了我的类路径以包含具有我的 TestNG 测试的已编译源文件的位置,还包括包含我的 testng.xml 文件的路径的根,但没有任何改变。我补充说:
C:\rest-app\out\production\Main\ *;C:\rest-app\out\production\Main\com\homeaway\app\Test\ *
编辑 10/25:Maven 现在可以正确构建和执行测试,但我仍然无法让 testng 从命令行执行。为了让 Maven 运行我的测试,我必须使用
<includes>
<include>**/*.java</include>
</includes>
代替:
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>