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

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

在Junit5中為每個測試設置環境變量

在Junit5中為每個測試設置環境變量

森林海 2021-05-14 15:10:18
我必須將測試從JUnit 4遷移到JUnit 5,我必須使用@Rule來設置EnvironmentVariables變量。在Junit 4中,為每個測試清除了變量,在JUnit 5中,我需要相同的行為,因為現在正在運行的測試是分別傳遞的,但是當我從類中運行所有測試時,第二個測試將失敗,因為仍然具有相同的環境變量。我有:@Rule public final EnvironmentVariables environmentVariables = new EnvironmentVariables();@Testvoid method1(){...}@Testvoid method2(){...}我對Junit 5尚不熟悉,因此在此先感謝您的幫助
查看完整描述

3 回答

?
富國滬深

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

你有沒有@RuleJUnit 4中應做與Extension在JUnit的5提供了一個非常緊密的功能
所以,你可以創建例如分機EnvironmentVariablesExtension所執行你的邏輯@Rule,并通過注釋您的測試類使用它在你的單元測試(ES)@ExtendWith(EnvironmentVariablesExtension.class)

請注意,如果@Rule在單個單元測試類中使用單個,則可以將此邏輯移入@BeforeEach每次運行測試之前調用的lifecyle方法。
如果只有幾個類setup在單個項目中使用此類,則仍可以引入一個抽象基測試類,該抽象基測試類在@BeforeEach方法中進行此設置,并使單元測試類繼承自該基類。
的最大價值之一@Rule是當您要為單元測試定義多個規則時,或者要在其他應用程序/項目中重用規則時。并非如此,不要像Extension在JUnit5中那樣引入它們并保持目前的簡單性。



查看完整回答
反對 回復 2021-05-19
?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

我認為您的關鍵字存在問題final。刪除它,它應該可以工作,

嘗試這樣:

@Rule
public EnvironmentVariables environmentVariables = new EnvironmentVariables();

final =定義只能分配一次的實體

所以從我的角度來看,這困擾著您。


查看完整回答
反對 回復 2021-05-19
  • 3 回答
  • 0 關注
  • 854 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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