JUnit

138 阅读1分钟

dependencies

<dependency>
    <groupId>org.assertj</groupId>
    <artifactId>assertj-core</artifactId>
    <version>3.21.0</version>
</dependency>
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.8.2</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>5.5.2</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-all</artifactId>
    <version>1.10.19</version>
    <scope>test</scope>
</dependency>

test

@Before
public void setUp() {
    System.out.println("Test is loading...");
}

@Test
public void test() {
    System.out.println("Testing...");
}

@After
public void after() {
    System.out.println("Test execution is complete.");
}

mock和spy

// mock对象执行的方法结果都是null
UserService service = mock(UserService.class);

// spy对象执行的方法都是真实调用
UserService service = new UserService();
service = spy(service);

when

// 作用于mock对象
when(service.getUser("张三"))
    .thenReturn(new User("张三"));
when(service.getUser("张三"))
    .thenThrow(new RuntimeException("User is not found."));

// 作用于spy对象
doReturn(new User("张三"))
    .when(service)
    .getUser("张三");
doThrow(new RuntimeException("User is not found."))
    .when(service)
    .getUser("张三");

assert

Throwable throwable = assertThrows(RuntimeException.class, () -> service.getUser("张三"));

assertThat(throwable).hasMessageContaining("User is not found.")

assertEquals(service.getUser("张三"), new User("张三"));

verify

verify(service, times(1))
    .getUser("张三");

verify(service, never())
    .getUser("李四");

captor

ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);

verify(service)
    .getUser(captor.capture());

assertEquals(captor.getValue(), "张三");

doAnswer

// 在service.addUser(user)执行的时候,捕获入参0号位置,设置value,id = 1L
doAnswer(
    invocation -> {
        ReflectionTestUtils.setField((User) invocation.getArgument(0), "id", 1L);
        return null;
    })
    .when(service)
    .addUser(user);