我有一個包含其他服務(wù)列表的服務(wù)public class MyFrontService { @Autowired private Set<? extends MyAbstractService> allMyServices;}它運行集合中的所有服務(wù)。這是 MyAbstractService 的簽名public abstract class MyAbstractService { boolean myMethod();}如果 allMyServices 中的任何服務(wù)返回 false,則 myFrontService 返回 false;只有當(dāng)它的所有服務(wù)都返回 true 時,它才會返回 true。我想知道如何使用 Java 8 方式對 MyFrontService 進(jìn)行單元測試。理想情況下,我可以指定一組服務(wù)返回 true,而其他服務(wù)返回 false。非常感謝任何幫助/提示
2 回答

偶然的你
TA貢獻(xiàn)1841條經(jīng)驗 獲得超3個贊
這不是 Java 8 特定的,但在您的測試框架內(nèi),您可以創(chuàng)建擴(kuò)展 MyAbstractService 的“假”測試服務(wù)類,每個類都確定性地成功或失敗。在這些測試類中,您可以重寫方法以生成 MyFrontService 將要檢查的特定結(jié)果。

UYOU
TA貢獻(xiàn)1878條經(jīng)驗 獲得超4個贊
您可以在服務(wù)的測試類中使用 Mockito,也許可以嘗試:
MyAbstractService mockAbstractService1 = mock(MyAbstractService.class);when(mockAbstractService1.myMethod()).thenReturn(true);MyAbstractService mockAbstractService2 = mock(MyAbstractService.class);when(mockAbstractService2.myMethod()).thenReturn(false); HashSet<MyAbstractService> abstractServices = new HashSet<MyAbstractService>();abstractServices.Add(mockAbstractService1);abstractServices.Add(mockAbstractService2);MyFrontService testFrontService = new MyFrontService();testFrontService.allMyServices = abstractServices;
像這樣,您創(chuàng)建 Mocks(空對象,具有與創(chuàng)建它的類相同的功能和屬性,但除非您添加“何時”,否則什么都不做)并使用您定義的“何時”,每次 myMethod()當(dāng)調(diào)用對象時,它會返回您在 when() 的 thenReturn() 中寫入的任何內(nèi)容。因此,每次為 mockAbstractService1 調(diào)用 myMethod() 時,它都會返回 true,而為 mockAbstractService2 調(diào)用 myMethod 時會返回 false。
添加回答
舉報
0/150
提交
取消