目前剛剛開始單元測試,所以我有兩個關(guān)于這個問題中這個錯誤的問題,我希望它沒問題。我有一個類有一個正面測試和三個負面測試,其中一個負面案例是使用 doThrow 來模擬失敗的存儲庫,但它也會導(dǎo)致正面測試失敗,有什么辦法可以解決這個問題嗎?理想情況下,負例和正例是否必須分為兩類?我已經(jīng)在谷歌上搜索過這個但找不到任何參考,甚至找不到與我相同的問題,已經(jīng)在不和諧中詢問,雖然我確實找到了一些修復(fù)方法,通過為負面的 doThrow 案例創(chuàng)建新類,但我正在尋找征求更多意見。這是負面案例的例子@Test(expected = DAOException.class) public void testFail() throws ObjectNotEncypted, ObjectNotFound { List<Long> ids = new ArrayList<Long>(); ids.add(id); Mockito.when(tempRepo.tempfunction(var)).thenReturn(Optional.of(expectedvalue)); Mockito.when(tempRepo.tempfunction(var)).thenReturn(expectedvalue); Mockito.when(tempRepo.tempfunction(var)).thenReturn(null); Mockito.when(tempRepo.tempfunction(var)).thenReturn(1); Mockito.when(tempRepo.tempfunction(var)).thenReturn(1); Mockito.doThrow(DAOException.class).when(tempRepo).tempfunctionthatshouldfail(var); service.dofunction(ids); }- 附加代碼繼承人我如何構(gòu)建配置和聲明變量@Configuration static class classConfig { @Bean public service accountService() { return new serviceImpl(); } @Bean public TempRepo tempRepo () { return Mockito.mock(TempRepo.class); }}@Autowired private Service service; @Autowired private TempRepo tempRepo ;預(yù)期的結(jié)果是所有測試用例都應(yīng)該運行,但我得到一個錯誤,并且只跟蹤一行,這com.project.common.exception.DAOException 是代碼的正例部分。
2 回答

犯罪嫌疑人X
TA貢獻2080條經(jīng)驗 獲得超4個贊
我注意到你tempRepo
是一個全局變量,你試過調(diào)用嗎Mockito.reset(tempRepo);
?
你如何初始化tempRepo
模擬?使用注釋@Mock
或在構(gòu)造函數(shù)中通過Mockito.mock(Repo.class)
?
或者你能在這里分享你的測試課嗎?

交互式愛情
TA貢獻1712條經(jīng)驗 獲得超3個贊
所以再試一次,經(jīng)過一些調(diào)試,由于某種原因我的否定案例在肯定案例之前運行,幸運的是 junit 有順序注釋,因為我使用 JUnit 4,我使用基于類名的順序,但是如果你使用 Junit 5 ,您可以使用按數(shù)字排序,例如@Order(1)
,它現(xiàn)在按預(yù)期工作
需要說明的是,由于某種原因每次解決@Before
和重置模擬都不起作用,即使從技術(shù)上講它應(yīng)該起作用
添加回答
舉報
0/150
提交
取消