簡體   English   中英

制定者和吸氣劑的單元測試

[英]unit testing of setters and getters

老師要我們做一個全面的單元測試。 對我來說,這將是我第一次使用JUnit。 我對測試set和get方法感到困惑。 你認為我應該測試它們嗎? 如果答案是肯定的; 這段代碼足夠用於測試嗎?

  public void testSetandGet(){
    int a = 10;
    Class firstClass = new Class();
    firstClass.setValue(10);
    int value = firstClass.getValue();
    Assert.assertTrue("Error", value==a);
  }

在我的代碼中,我認為如果有錯誤,我們無法知道錯誤是由於setter或getter而導致的。

我會說不要為setter和getter編寫單元測試,除非你的setter和getter包含程序邏輯(在調用setter或getter時計算的東西)。

在一個真實的項目中,你將擁有更多的程序邏輯來進行單元測試,而無需像setter和getter那樣測試一些微不足道的東西。

Roy Osherove在他的着名着作“單位測試的藝術”中說:

屬性(Java中的getter / setter)是通常不包含任何邏輯的代碼的良好示例,並且不需要測試。 但請注意:一旦在屬性中添加任何檢查,您將需要確保正在測試邏輯。

您正在測試您設置的內容,也可以“獲取”。 將您的Assert語句更改為:

Assert.assertTrue(a, true);

此外,你應該通過a ,如果你要使用它。

我認為如果你有一些條件,這很重要。 例如,如果它返回異常,如果你的int必須是正數或其他條件。 但如果它只是一個變量賦值,我認為它沒有用......對於吸氣者來說也是如此。

如果我是你,我會首先為我正在測試的類中的屬性set一些值,然后我將確保get方法返回相同的值。

public void testSetandGet(){
    int a = 10;
    Class firstClass = new Class();
    firstClass.setValue(10);
    int value = firstClass.getValue();
    Assert.assertEquals(value, a);
}

不要對依賴於被測試類之外的東西的任何東西進行單元測試。

如果你的getter和setter是微不足道的,那么只有當底層JVM /編譯器失敗時它們才會失敗 - 所以你實際上是在測試JVM /編譯器,而不是你的代碼。

如果你想測試它,你可以暫時將變量公開,然后:

firstClass.setMyInt(5);
Assert.assertTrue(5, firstClass.myInt);

但是,getter和setter可以自動生成,它們通常只包含方法中的一行,如果它們導致代碼失敗,則可能會遇到更大的問題。 單元測試不常用來測試吸氣劑和定位器,你可以避免測試它們,你的單元測試仍然是全面的。

暫無
暫無

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

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