我經常創建包含某種集合(集合,列表,任何)的對象。他們永遠不能爲空。如果null由構造函數或setter傳遞,則創建空集合的新實例。這裏是一個錯誤的例子(由評論標記)。所有集合都不能爲空的單元測試的通用方法
package com.myapp;
import com.google.common.collect.Lists;
import java.util.List;
public class MyClass {
private List<String> myNeverNullList1;
private List<String> myNeverNullList2;
public MyClass(List<String> myNeverNullList1, List<String> myNeverNullList2) {
this.myNeverNullList1 = myNeverNullList1==null? Lists.newArrayList():myNeverNullList1;
this.myNeverNullList2 = myNeverNullList2==null? Lists.newArrayList():myNeverNullList2;
}
public void setMyNeverNullList1(List<String> myNeverNullList1) {
this.myNeverNullList1 = myNeverNullList1==null? Lists.newArrayList():myNeverNullList1;
}
public void setMyNeverNullList2(List<String> myNeverNullList2) {
//OOPS, I forgot to put the null check here, should be caught by Unit Tests
this.myNeverNullList2 = myNeverNullList2;
}
}
我通過單元測試,測試在單元測試這種行爲,但它是乏味寫出這樣簡單的測試,爲每個集合。有沒有圖書館,可以幫助我自動測試這種行爲?
這可能會幫助你。 http://stackoverflow.com/questions/11152536/check-if-a-collection-is-empty-in-java-which-is-the-best-method –
你需要單獨測試你所有的設備,這麼久故事短 - 沒有,沒有通用的方式來驗證你的應用程序中的所有集合不是null。如果您有2個或N個需要驗證的集合,則需要編寫2個或N個斷言。 –
你真的需要替換整個列表嗎?根據這種操作的可能副作用,對我來說這似乎非常危險...... – Spotted