3 回答

TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊
我希望跳過(guò)當(dāng)前測(cè)試而不是所有剩余測(cè)試的問(wèn)題仍然存在。
結(jié)果發(fā)現(xiàn)問(wèn)題出在 Testng 中的 configfailurepolicy 上。當(dāng)我希望將其設(shè)置為繼續(xù)(繼續(xù)套件的其余部分)時(shí),它默認(rèn)為跳過(guò)(跳過(guò)所有剩余的測(cè)試)。
這是我在其他地方找到的答案,我設(shè)法以兩種不同的方式應(yīng)用它。鏈接在這里
1. 首先,創(chuàng)建一個(gè) testng.xml 并從那里運(yùn)行測(cè)試。在套件名稱旁邊,添加標(biāo)簽 configfailurepolicy="continue" 這是我的 testng.xml 下面
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" configfailurepolicy="continue">
<test name="MyTests" preserve-order="true">
<classes>
<class name="testclassLocation..." />
</classes>
</test>
</suite>
如果您這樣做,請(qǐng)確保從 testng.xml 運(yùn)行測(cè)試。
2. 找到 testng 的 .jar 所在位置。我使用的是maven,所以它是“${user.dir}.m2\repository\org\testng\testng\6.14.3”。
然后打開(kāi) .jar 存檔,查看文件“testng-1.0.dtd”,找到該行
configfailurepolicy (skip | continue) "skip"
并將其更改為
configfailurepolicy (skip | continue) "continue"
之后應(yīng)該可以正常工作。
編輯:正如評(píng)論中提到的,建議使用第一個(gè)解決方案,因?yàn)樗试S這些更改/修復(fù)可以跨多個(gè)項(xiàng)目/設(shè)備移植。第二種解決方案只會(huì)將修復(fù)應(yīng)用于您的計(jì)算機(jī)。

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
SkipException就是您正在尋找的。
在 中beforeMethod
,檢查您的數(shù)據(jù),SkipException
如果不正確則拋出。這將跳過(guò)測(cè)試。在這個(gè)完整而簡(jiǎn)單的示例中,test2
跳過(guò):
import org.testng.SkipException;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.reflect.Method;
public class TestA {
? ? @Retention(RetentionPolicy.RUNTIME)
? ? public @interface MyCustomAnnotation {
? ? ? ? boolean dataCorrect();
? ? }
? ? @BeforeMethod
? ? public void beforeMethod(Method m) {
? ? ? ? if (!m.getAnnotation(MyCustomAnnotation.class).dataCorrect()) {
? ? ? ? ? ? throw new SkipException("Invalid data");
? ? ? ? }
? ? }
? ? @Test
? ? @MyCustomAnnotation(dataCorrect = true)
? ? public void test1() {
? ? ? ? System.out.println("test1");
? ? }
? ? @Test
? ? @MyCustomAnnotation(dataCorrect = false)
? ? public void test2() {
? ? ? ? System.out.println("test2");
? ? }
}
您還需要更改默認(rèn)配置失敗策略,以便即使跳過(guò)一個(gè)測(cè)試也可以運(yùn)行其他測(cè)試。這是在套件級(jí)別完成的:
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" configfailurepolicy="continue">
...
</suite>
感謝@Kyle OP指出這個(gè)屬性。

TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊
在BeforeMethod中創(chuàng)建一個(gè)靜態(tài)Booleanflag,如果數(shù)據(jù)不正確,則只需將標(biāo)志更改為true,然后在布爾為true的測(cè)試中首先將標(biāo)志更改為false并失敗測(cè)試
示例代碼
public static Boolean myflag=false;
@BeforeMethod
public void beforeMethod(Method m){
//reads code
if (dataNotCorrect)
myflag=true;
}
@Test @MyCustomAnnotation(data = incorrect)
public void Test1(){
if(myflag){
myflag=false;
s_assert.fail();
}
添加回答
舉報(bào)