2012-10-23 40 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

相關問題