讓說我的單元測試,返回汽車的數量在我的車庫的方法,所以我有這樣的方法:我應該在單元測試中做多少對象初始化?
public class Garage {
public long numberOfCarsInGarage() {
return cars.size();
}
}
從測試類:
@Test
public void numberOfCarsInGarage_returnsCount_whenCarsHaveBeenAddedToTheGarage() {
Garage garage = new Garage();
Car firstCar = new Car();
Car secondCar = new Car();
Car thirdCar = new Car();
garage.addCars(firstCar, secondCar, thirdCar);
assertEquals(3, garage.numberOfCarsInGarage());
}
每輛車對象有許多屬性需要設置,但我不需要設置它們以便測試通過。我是否應該在測試中儘可能少地使用代碼來使其通過/失敗?在這個測試中,我沒有在汽車對象上設置虛擬數據,我沒有做錯任何事情?
您不需要設置不會導致測試失敗的字段。我會盡最大努力通過測試。理想情況下,你會做的最低首先失敗,然後添加代碼,使其通過。 –
調用'garage.addCars(...);'的已知副作用是什麼?這就是你的測試應該涵蓋的內容。 –
我同意上述兩點意見。我的建議:寫下待測試方法的javadoc,並驗證在此javadoc中聲明的合同是否已完成。如果合同是「返回車庫中的汽車總數」,那麼它應該測試。如果合同是「返回車庫中紅色車輛的數量」,那麼它應該添加一些紅色車輛和一些非紅色車輛,並對其進行測試。編寫javadoc不僅僅是因爲它記錄了方法,還因爲它讓你思考你需要測試什麼,邊緣情況等。 –