亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據測試注釋加載屬性

根據測試注釋加載屬性

MMTTMM 2023-07-13 14:12:01
有沒有辦法用注釋或類似的東西告訴測試,根據自定義注釋加載屬性并運行與測試具有的參數數量相同的測試。例如:我想運行測試 A,其中注入了 Spring @value 的值三次,對于運行 1,我希望測試從屬性文件 X 獲取屬性文件 X 的值,然后從屬性文件 Y 獲取運行 2 的值,然后運行3 來自屬性文件 Z.@Value("${person.name}")private String person.name;@RunTestWithProperties(properties = {X,Y,Z})@Testpublic void testA() {(System.out.println(person.name); }在第一次運行時,此測試將從 X 屬性文件打印 person.name,在第二次運行時,測試將從 Y 打印 person.name,依此類推。預期會發生什么:testA 從文件 X、Y 和 Z 運行 3 次(每次運行具有不同的屬性);我可以使用數據提供程序或類似的東西,使用系統變量加載屬性,但這不是我想要的解決方案。我使用的技術是 Java、TestNG 和 Spring。任何解決方案都非常受歡迎。提前謝謝你們了!
查看完整描述

1 回答

?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

您可以使用參數化測試。您需要創建一個注釋的方法,@Parameterized.Parameters您可以在其中加載集合中的所有數據(基本上是每次運行需要傳遞的參數)。


然后創建一個構造函數來傳遞參數,并且該構造函數參數將在每次運行時從此集合中傳遞


例如


 @RunWith(Parameterized.class)

 public class RepeatableTests {


 private String name;


 public RepeatableTests(String name) {

    this.name = name;

 }


 @Parameterized.Parameters

 public static List<String> data() {

    return Arrays.asList(new String[]{"Jon","Johny","Rob"});

 }


 @Test

 public void runTest() {

    System.out.println("run --> "+ name);

 }

}

或者,如果您不想使用構造函數注入,您可以使用@Parameter注釋來綁定值


@RunWith(Parameterized.class)

public class RepeatableTests {


@Parameter

public String name;


@Parameterized.Parameters(name="name")

public static List<String> data() {

    return Arrays.asList(new String[]{"Jon","Johny","Rob"});

}


@Test

public void runTest() {

    System.out.println("run --> "+ name);

}

}


查看完整回答
反對 回復 2023-07-13
  • 1 回答
  • 0 關注
  • 93 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號