2012-10-23 41 views
2

当我运行(视窗7命令行):为什么TestNG看到我的包但不是我的课?

C:\其余应用内的\ src \主\的java \ COM \ myCompany的\应用\试验>的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的应用程序\ LIB \ *; C:\ REST的应用程序的\ src \主\ java中的\ com \ myCompany的\程序\测试\ *

第一个目录指向我所有包含的.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的应用程序\出\生产\ MAIN \ *; C:\ REST的应用程序\出\生产\ MAIN \ COM \ HomeAway的\程序\测试\ *

编辑10/25:Maven现在可以正确构建并执行测试,但我仍然无法从命令行获取testng。为了让Maven来运行我的测试,我不得不使用

<includes> 
    <include>**/*.java</include> 
</includes> 

代替:

<suiteXmlFiles> 
    <suiteXmlFile>testng.xml</suiteXmlFile> 
</suiteXmlFiles> 
+0

http://stackoverflow.com/questions/39942523/unable-to-read-methods-on-class-testng/40329265#40329265 –

回答

0

你的CLASSPATH应该指向包开始,而不是Java的文件本身。

移动你的testng.xml为src /主/ Java和使用此类路径:

C:\ REST的应用程序\ lib中*; C:\ REST的应用程序的\ src \主\ java的\

编辑: 我意识到你实际上试图直接运行测试套件。这需要在编译的测试类上完成 - 你的类路径应该指向二进制文件。

然而,这一切的行家为您处理,如果使用默认设置:

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

+0

我更新了我的类路径和感动我的TestNG的.xml文件建议但收到相同的错误。我的xml文件的内容是相同的。 – Jason

+0

Oy - 我的不好。当你运行测试时,你需要在编译的类上运行它们,而不是java文件本身。 – Thomas

+0

我想知道这件事。我的IDE似乎无需编译即可运行它们。我在我的答案中更新了我的类路径,但仍然是同样的问题。我以为\ *说要在下面的所有路径看? – Jason

0

你源文件可能不会被您的项目编译。你使用maven来执行测试吗?

+0

我将在稍后使用Maven,一旦我想到整个问题,但现在,不,我没有使用它。 – Jason

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> 

我认为下方法时不搜索整个类路径。我没有试过这个。但这应该工作

+0

我试过这个,并收到了我在niharika_neos响应中提出的错误。或许至少有一个不同的错误。 – Jason

0

我认为你的类路径是不正确的。包含*的类路径条目与类文件不匹配。你可以参考this得到一些想法。 如果你的课程位于C:\rest-app\out\production\Main\com\homeaway\app\Test\,那么 com\urco\app\Test是包名称的一部分,所以我认为你应该只在你的类路径中放置C:\ rest-app \ out \ production \ Main \。

希望帮助..

+0

我相应地修改了我的类路径,并从下面的注释中实现了XML更改,现在收到:[TestNG] [错误] 无法实例化类com.homeaway.app.SandBoxTestsIT – Jason

相关问题