我有一個類需要進行單元測試。的結構如下:Easymock新的對象和處理它的函數調用(沒有PowerMock)
public class classToBeTested{
public returnType function1(){
//creation of variable V
return new classA(V).map();
}
}
類CLASSA如下:
public class classA{
//Constructor
public returnType map(){
//Work
}
}
我創建使用FunSuite,GivenWhenThen和EasyMock的Scala中的單元測試。
我的測試結構如下:
class classToBeTested extends FunSuite with GivenWhenThen with Matchers with EasyMockSugar {
test(""){
Given("")
val c = new classToBeTested()
expecting{
}
When("")
val returnedResponse = c.function1()
Then("")
//checking the returned object
}
}
我需要什麼,在期待寫?
我該如何處理上述情況?
注意:PowerMock不能使用。
回答: 謝謝,@亨利。經過大量的搜索和@Henri提供的答案,重構代碼是處理這種情況的最佳方式。原因如下:
單元測試不能模擬由new
調用(沒有PowerMock)創建的對象。因此,爲了測試代碼,我們需要根據正在使用的類中存在的條件(此處爲classA
)在要測試的類中編寫單元測試(此處爲classToBeTested
)。因此,在測試classToBeTested
時,我們需要了解classA
的功能和結構,並分別創建測試用例。
由於現在測試案例取決於classA
中方法的結構,暗示classToBeTested
和classA
緊密耦合。因此,通過TDD方法,我們需要重構代碼。
在上面的例子:
而不是使用
classA object = new classA(V);
它更好地提供對象的方法(例如:自動裝配Spring MVC中的classA object
)。
接受建議。如果有人可以給出更好的解釋,請做到這一點。
我沒有嘗試部分模擬方法。但重構是目前沒有動力鎖的最佳選擇。 –