簡體   English   中英

如何在JUnit測試中指出參數值無關緊要?

[英]How to notate that the parameter value doesn't matter in a JUnit test?

我正在使用JUnit4,Mockito和Hamcrest進行一些TDD。 我當前的測試如下:

FeatureFilter featureFilter = FeatureFilter
    .describeFeature()
    .addFeatureRef("myNewFeature",
        thatIsAvailable()
            .atEndpoint("/resourceWithFeature"))
    .andDisable();

assertThat(featureFilter.isDisabledFor("/resourceWithFeature", null, "myNewFeature"), is(true));
assertThat(featureFilter.isDisabledFor("/irrelevant", null, "myNewFeature"), is(false));
assertThat(featureFilter.isDisabledFor("/resourceWithFeature", null, "self"), is(false));

featureFilter.isDisabledFor的第二個參數應該是用戶名( String ),我希望測試傳達的信息是在這種情況下用戶名無關緊要。 如果我處於測試雙打的情況下,則可以使用Matcher例如any(String.class) ,但這不是這里的選擇。

作為開發人員,您將如何傳達此斷言的意圖?

有一個稱為JUnit Theories的功能。 @TestTheory在測試上有不同的側重點:

  • 測試與輸入輸出相關(在某些輸入上,需要一些輸出)
  • 一個理論與算法有關,即,它對被調用函數的行為進行斷言,接受大量輸入參數(代表所有可能的輸入參數。此類理論的輸出通常不是固定的,而是經過計算的。

適用於您的問題:

  • 由於未使用的參數不會影響輸出,因此測試無法斷言此行為。
  • 具有不同數據點的理論至少可以斷言,與用戶無關的行為適用於所有用戶數據點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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