簡體   English   中英

Mockito - 斷言對存根方法的調用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM