[英]TestNG not running tests in testing suite
我正在嘗試使用 XML 和 TestNG 運行一個測試套件,但我總是在使用兩者時收到相同的消息:Eclipse 和命令行:
[TestNG] Running:
/Users/achavez/Programs/Selenium/java/src/tests/resources/testng.xml
===============================================
TestingSuite1
Total tests run: 0, Failures: 0, Skips: 0
===============================================
文件讀取正確,但測試似乎沒有運行。
這些是我的 testng.xml 的內容:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TestingSuite1" verbose="1">
<test name="Test1" >
<packages>
<package name="tests"/>
</packages>
</test>
</suite>
這就是我的目錄結構在 Eclipse 中的樣子:
此外,這也是我嘗試通過命令行運行測試套件的方式:
java -jar /Applications/Zend\ Studio.app/Contents/Resources/Java/plugins/org.testng.eclipse_6.8.6.20141201_2240/lib/testng.jar src/tests/resources/testng.xml
我已經嘗試通過 eclipse 清理項目,但似乎沒有幫助。 我也試過跑步:
mvn clean
但它也沒有完成這項工作。
任何幫助我指出正確方向的幫助將不勝感激!
您還可以檢查導入的 Test 注釋的導入,應該是:
import org.testng.annotations.Test;
@Test
public myTest(){ ... }
而不是例如:
import org.junit.Test;
我不得不將我的方法訪問修飾符從私有更改為 public 以使其正常工作。
顯然,TestNG 在為測試套件生成 XML 文件方面是錯誤的。
即使按照他們的指示去做,我的測試也沒有運行。 我最終得到了這個testng.xml
文件和我的測試,開始運行:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TestingSuite" parallel="none">
<test name="Test1">
<classes>
<class name="tests.Page1"/>
</classes>
</test>
<test name="Test 2">
<classes>
<class name="tests.Page2"/>
</classes>
</test>
</suite>
我遇到了類似的問題,並通過在 Eclipse 中執行項目清理(項目-> 清理-> 清理選定項目)解決了這個問題
就我而言,@Test 注釋由 IDE 自動import org.junit.Test
為import org.junit.Test
。
將其更改為import org.testng.annotations.Test
,測試被正確提取。
非常簡單,但有時很難發現。 當相應的數據提供者沒有返回數據時,不會選擇@Test
。
代碼中有兩個問題:
1. 這是因為,我的@Test 方法正在調用另一個將返回布爾值的方法。 一旦我評論了相同的@Test 和方法,整個 testNG xml 就開始工作了。
2. 第二個錯誤是,我使用了下面的,這是 Poi 類的錯誤分配。 工作簿 WB = 新的 XSSFWorkbook(FIS); 表 WSh= WB.getSheetAt(1); 我將以上更改為以下內容: XSSFWorkbook WB = new XSSFWorkbook(FIS); XSSFSheet WSh= WB.getSheetAt(1); 在上述兩個更正之后,腳本開始工作。
就我而言,該測試在@Test(...) 中被意外標記為“enabled = false”。 確保您的值被標記為“true”。
我也遇到了這個問題,上述解決方案都沒有奏效。 然而,重新啟動 Eclipse 確實如此。 我知道這似乎是一個不必要的答案,但如果我早點完成,我自己會節省很多時間,所以我還是會發布它。
我遇到了同樣的問題,這是我的結果:在我的項目中,我有測試文件
src/test/java/com/temporary/core
同時我有測試的資源
src/test/resources/com/temporary/Core
正如我發現的,testng 試圖在第二個目錄中找到測試文件。
當我將包含資源的目錄從 Core 重命名為 tcore 時,問題得到解決。
我遇到了同樣的問題,這對我有用:
我把所有的 TestNG 庫放在我項目的一個單獨的 lib 文件夾中
一種。 com.beust.jcommander_1.72.0.jar
灣org.apache-extras.beanshell.bsh_2.0.0.b6.jar
C。 org.testng_6.14.2.r201802161450.jar
d. or.yaml.snakeyaml_1.17.0.jar
我還在 lib 文件夾中放了一份 selenium-server 和 chromedriver 的副本
從我的項目文件夾( testng.xml
位於項目根目錄)我運行:
java -cp .\\lib\\*;.\\target\\classes org.testng.TestNG testng.xml
我遇到了同樣的問題,我已經從 eclipse 市場更新/安裝了 TestNG,它對我有用
如果@Test 方法是 public boolean() 並且返回類型為 true/flase 它不會執行..奇怪但在我的情況下有效。
我已經完成了每個人在這里分享的所有可能的解決方案,但仍然不起作用。
聽說有人提到創建一個新的工作區。
所以我開始了一個新的工作區並重新創建了整個 TestNG 套件和方法。
有效!
很可能我之前工作區中的其他 TestNg 內容可能與最近的 Testng 設置發生沖突。
所以開始一個新的工作區解決了!
當suite.xml 中有組使用並且@BeforeXXX 注釋缺少alwaysRun = true 時,也會發生這種情況。
@BeforeTest(alwaysRun = true)
public void setUp() throws IOException {
}
在我的例子中,我使用的是 JUnit 然后移動到 testNG,所以除了更新類中的導入之外:
import org.testng.annotations.Test;
@Test
public myTest(){ ... }
我還必須從我的pom.xml
中刪除 JUnit 的依賴項。 否則maven-surefire-plugin
會自動嘗試使用 JUnit 運行。因此您可以刪除或指定此處提到的提供程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.