单元测试实战(四种覆盖详解、测试实例) - csonezp - 博客园 (cnblogs.com)
intellij IDEA常见问题汇总_failed to parse version of junit:junit: 4.13.2-CSDN博客
IDEA懒人必备插件:自动生成单元测试,太爽了!_squaretest idea-CSDN博客
2024-09-02 start
单元测试一直报null异常,后来搜到Test的包idea导错了。
java后端用mockito做单元测试,一直报错空指针问题【已解决】_mockitojunitrunner 入参 空指针-CSDN博客
end
2024-10-14 start:
import org.junit.Test;
import org.junit.experimental.categories.Category;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.data.jpa.domain.Specification;
import java.util.*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.when;
import org.junit.experimental.categories.Category;
import com.gmcc.msb.common.test.Essential;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;
import org.mockito.junit.jupiter.MockitoExtension;
@Category(Essential.class) // Essential.class 可不写
@RunWith(MockitoJUnitRunner.class)
// controller的测试
【
@Mock(lenient = true)
private TestService mockTestService;
@InjectMocks
private TestController testControllerUnderTest;
】
@Test(expected = Exception.class)
// 抛异常
doThrow(new RuntimeException("error")).when(service).function(any(String.class));
when(mockStringRedisTemplate.opsForValue()).thenReturn(valueoperations);
when(mockStringRedisTemplate.opsForValue().get(any(String.class))).thenReturn(null);
IDEA单元测试插件SquareTest破解 - FinnHao - 博客园 (cnblogs.com)
end
2024-10-20 start:
<junit.version>4.12</junit.version>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
end
2024-11-07 start:
@Mock
private EntityManager mockEm;
// jpql 单测mock
final TypedQuery<TestResponseVo> mockTypedQuery = mock(TypedQuery.class);
when(mockEm.createQuery(any(String.class),eq(TestResponseVo.class))).thenReturn(mockTypedQuery);
TestResponseVo testResponseVo = new TestResponseVo();
testResponseVo .setValue("12345678910");
List<OfficeImUserResponseVo> list = new ArrayList<>();
list.add(testResponseVo );
when(mockTypedQuery.getResultList()).thenReturn(list);
final TypedQuery<Long> mockTypedCountQuery = mock(TypedQuery.class);
when(mockEm.createQuery(any(String.class),eq(Long.class))).thenReturn(mockTypedCountQuery);
when(mockTypedCountQuery.getSingleResult()).thenReturn(20L);
end
2024-11-12 start:
// 通过反射设置业务对象的值
ReflectionTestUtils.setField(testUnderTest, "min", 0);
ReflectionTestUtils.setField(testUnderTest, "max", 0);
end
2024-12-03 start:
模拟网络请求
import org.powermock.api.mockito.PowerMockito;
URL url = new URL("http://example.com");
String host = url.getHost();
int port = url.getPort();
if (port == -1) {
port = 80; // 默认HTTP端口
}
// 使用PowerMock模拟Socket类
PowerMockito.whenNew(Socket.class).withArguments(host, port).thenReturn(mock(Socket.class));
end
2024-12-09 start:
Date pushTimeStart = new GregorianCalendar(2024, Calendar.DECEMBER, 9, 0, 10, 0).getTime();
Date pushTimeEnd = new GregorianCalendar(2024,Calendar.DECEMBER, 12, 9, 11, 18).getTime();
// 返回值void时
doNothing().when(service).function(para1, para2);
// okhttpclient的调用
import okhttp3.*;
Request request = new Request.Builder().url("http://example.com/test/url/").build();
Protocol protocol = Protocol.HTTP_1_0;
ResponseBody responseBody = ResponseBody.create(MediaType.parse("application/json; charset=utf-8"), "{}");
Response responseModel = new Response.Builder().code(200).body(responseBody).request(request).protocol(protocol).message("成功").build();
Call mockCall = mock(Call.class);
when(mockOkHttpsClient.newCall(any(Request.class))).thenReturn(mockCall);
when(mockCall.execute()).thenReturn(responseModel);
end