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

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

將參數從 JUnit 5 @BeforeEach 傳遞到單獨的測試

將參數從 JUnit 5 @BeforeEach 傳遞到單獨的測試

米脂 2023-08-16 10:01:23
假設我有一個@BeforeEach方法,它使用外部方法來獲取值并使用該值進行設置:@BeforeEachvoid foo() {  int bar = getBarFromSomething();  setupSomethingWithBar(bar);}現在,我希望能夠在測試用例之前調用該方法之后將 的值bar(每次getBarFromSomething()調用時可能會更改)傳遞給每個單獨的測試用例。foo()我想這樣做,以便我可以使用我在@BeforeEach foo()方法調用中設置的參數來測試某些內容:@Testvoid test_baz(int bar) {  assertEquals(bar, 5);}我將如何將調用中的參數傳遞@BeforeEach foo()給每個單獨的@Test案例?我認為參數化測試不會起作用,因為生成的方法可能會輸出不同的結果,因此每個案例運行bar只需調用一次,并且需要用于在調用中設置某些內容。@BeforeEach@Testfoo()
查看完整描述

2 回答

?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

只需將方法變量移動到成員變量...就像這樣:


int bar = getBarFromSomething();

@BeforeEach

void foo() {

    setupSomethingWithBar(bar);

}

然后


@Test

void test_baz() {

    assertEquals(bar, 5);

}

應該管用


查看完整回答
反對 回復 2023-08-16
?
月關寶盒

TA貢獻1772條經驗 獲得超5個贊

沒有特定于大學的設施來支持您的想法。

除非您使用@TestInstance(Lifecycle.PER_CLASS),否則將為每個測試調用創建測試類的新實例。

但更好的方法是使用帶有@MethodSource的參數化測試,并在給定部分的某處測試中正確執行設置。這正是 @ParametrizedTests 想要解決的任務。

@TestInstance(TestInstance.Lifecycle.PER_CLASS)

class TestSample {


? ?@ParameterizedTest

? ?@MethodSource("bars")

? ?fun isFive(bar:Int){

? ? ? ?setupSomethingWithBar(bar)??

? ? ? ?assertEquals(bar, 5)

? ?}


? ?fun bars() = (1..10).asSequence().asStream()

}


查看完整回答
反對 回復 2023-08-16
  • 2 回答
  • 0 關注
  • 202 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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