[英]Mockito - Asserting invocations for a stubbed method
我有一個存根方法,我想斷言它的調用計數。 但是當方法被存根時, times(x)
參數看起來沒有任何區別。 為什么是這樣? 這樣做的正確方法是什么?
@Test
public void MyTest() {
PowerMockito.when(mock.someMethod()).thenThrow(RuntimeException.class);
testClass.anotherMethod();
Mockito.verify(mock, times(10)).someMethod(); // succeeds regardless of count
}
我注意到你實際上並沒有調用someMethod
。
正常方法
public class AppleService {
public String saveApple(String apple) {
String appleString = "i love " + apple + " apple";
return appleString;
}
}
測試班
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
@ExtendWith(MockitoExtension.class)
public class AppleServiceTest {
@Mock
private AppleService appleService;
@Test
void saveAppleWithStaticMockTest() {
AppleService appleService = mock(AppleService.class);
appleService.saveApple("Macintosh");
verify(appleService).saveApple("Macintosh");
verify(appleService, times(1)).saveApple("Macintosh");
}
@Test
void saveAppleWithAnnotationMockTest() {
appleService.saveApple("Macintosh");
verify(appleService).saveApple("Macintosh");
verify(appleService, times(1)).saveApple("Macintosh");
}
}
構建.gradle
plugins {
id 'java'
}
group 'org.example'
version '1.0-SNAPSHOT'
repositories { jcenter() }
dependencies {
testImplementation('org.junit.jupiter:junit-jupiter:5.6.2')
testCompile 'org.mockito:mockito-junit-jupiter:3.4.4'
}
test {
useJUnitPlatform()
}
來自這里的完整代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.