运行时(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>
答案 0 :(得分:0)
您的类路径应该指向包的起始位置,而不是java文件本身。
将testng.xml移动到src / main / java并使用此类路径:
C:\其余应用内\ lib中*; C:\其余应用内的\ src \主\的java \
编辑: 我意识到你实际上是在尝试直接运行测试套件。这需要在已编译的测试类上完成 - 您的类路径应该指向二进制文件。
但是,如果您使用默认设置,则由maven全部处理:
src/main/java/ <- your java code
src/test/java/ <- your test code where test-classes are named *Test.java
在你的pom.xml中:
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.3.1</version>
<scope>test</scope>
</dependency>
请参阅:http://maven.apache.org/plugins/maven-surefire-plugin/examples/testng.html
答案 1 :(得分:0)
您的项目可能无法编译您的源文件。你使用maven来执行测试吗?
答案 2 :(得分:0)
你试过吗
<suite name="Suite1" verbose="1" >
<test name="SandBoxTests" >
<classes>
<class name="com.mycompany.app.Test.SandBoxTests">
<methods>
<include name="TestA"/>
</methods>
</class>
</classes>
</test>
</suite>
我认为在方法下它不是在搜索整个类路径。我没试过这个。但这应该有用
答案 3 :(得分:0)
我认为你的类路径不正确。包含*的类路径条目与类文件不匹配。您可以参考this获取一些想法。
如果您的课程位于C:\rest-app\out\production\Main\com\homeaway\app\Test\
,那么
com\urco\app\Test
是包名称的一部分,所以我认为你应该只在你的类路径中放置C:\ rest-app \ out \ production \ Main \。
希望有所帮助..