簡體   English   中英

TestNG 未在測試套件中運行測試

[英]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 中的樣子:

Eclipse 中的 TestNG 目錄結構

此外,這也是我嘗試通過命令行運行測試套件的方式:

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.Testimport 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 時,問題得到解決。

我遇到了同樣的問題,這對我有用:

  1. 我把所有的 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

  2. 我還在 lib 文件夾中放了一份 selenium-server 和 chromedriver 的副本

  3. 從我的項目文件夾( 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM