PowerMock (UUID, private method)

1. maven配置依賴

<properties>
    <powermock.version>2.0.2</powermock.version>
</properties>
<dependencies>
   <dependency>
      <groupId>org.powermock</groupId>
      <artifactId>powermock-module-junit4</artifactId>
      <version>${powermock.version}</version>
      <scope>test</scope>
   </dependency>
   <dependency>
      <groupId>org.powermock</groupId>
      <artifactId>powermock-api-mockito</artifactId>
      <version>${powermock.version}</version>
      <scope>test</scope>
   </dependency>
</dependencies>

2. 使用

import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.core.classloader.annotations.PrepareForTest;
import static org.powermock.api.mockito.PowerMockito.mockStatic;
import static org.mockito.Mockito.*;


@RunWith(PowerMockRunner.class)
@PrepareForTest({MyModelService.class})

public class MyModelServiceTest {

    @InjectMocks
    MyModelService myModelService;

    @Before
    public void setUp() { MockitoAnnotations.initMocks(this);}

    @Test
    public void should_get_uuid_successfully(){
        
        //UUID

        UUID uuid = UUID.fromString("5211E915-C3E2-4DCB-0776-C7B900F38AB7");

        mockStatic(UUID.class);
        when(UUID.randomUUID()).thenReturn(uuid);
        MyModel model = myModelService.approve();
        
        //private method
         MyModelService spy = PowerMockito.spy(new MyModelService());

        // use PowerMockito to set up your expectation
        PowerMockito.doReturn(value).when(spy, "privateMethodToMock", "parameter1");
        // also can use PowerMockito.when
        //PowerMockito.when(spy, "privateMethodToMock", parameter1).thenReturn(value);

    }
}

參考文檔:https://github.com/powermock/powermock

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章