结果断言
java
Assertions.assertEquals(Object expected, Object actual)
Assertions.assertDoesNotThrow(Executable executable)
Assertions.assertThrows(Class<T> expectedType, Executable executable)
Assertions.assertTrue(boolean condition)
Assertions.assertNotNull(Object actual)
Mock
java
// 创建 Mock 对象
List<String> mockedList = mock(List.class);
// 设置 Mock 行为
when(mockedList.get(0)).thenReturn("first");
when(mockedList.size()).thenReturn(10);
// 使用参数匹配器
when(mockList.get(anyInt())).thenReturn("element");
// 静态方法
try (MockedStatic<UtilityClass> mockedStatic = mockStatic(UtilityClass.class)) {
// Mock 静态方法
mockedStatic.when(() -> UtilityClass.staticMethod("test"))
.thenReturn("mocked result");
assertEquals("mocked result", UtilityClass.staticMethod("test"));
}
// 设置 Mock 行为:当调用 setString 方法时,什么都不做
Mockito.doNothing().when(ppstmt).setString(anyInt(), anyString());
// 构造方法
MockedConstruction<MyClass> myClassMockedConstruction = Mockito.mockConstruction(MyClass.class,
(mock, context) -> Mockito.when(mock.someMethod(anyString(), anyString(), anyString(), any())).thenReturn("xxx)))
读取测试文件
java
public static String readFile(String filePath) {
File jsonFile = UsFileUtils.getFile(filePath);
StringBuilder stringBuilder = new StringBuilder();
try {
FileReader fileReader = UsFileUtils.getFileReader(jsonFile);
char[] buffer = new char[1024];
int length;
while ((length = fileReader.read(buffer)) != -1) {
stringBuilder.append(buffer, 0, length);
}
fileReader.close();
} catch (Exception e) {
log.error("read datasource.json fail, {}", ExceptionUtil.getExceptionInfo(e));
}
return stringBuilder.toString();
}
SpringBoot配置属性绑定测试
java
@Test
void testGetInnerDataSourceMap() {
Map<String, String> properties = new HashMap<String, String>() {{
put("xxx.yyy.zzz1", "1");
put("xxx.yyy.zzz2", "2");
put("xxx.yyy.zzz3", "3");
}};
ConfigurationPropertySource source = new MapConfigurationPropertySource(properties);
Binder binder = new Binder(source);
BindResult<beanName> bindResult = binder.bind("xxx", beanName.class);
DataSourceConfig boundProperties = bindResult.get();
Assertions.assertEquals("1", boundProperties.getyyy().get("zzz1"));
Assertions.assertEquals("2", boundProperties.getyyy().get("zzz2"));
Assertions.assertEquals("3", boundProperties.getyyy().get("zzz3"));
}
@Configuration
@ConfigurationProperties(prefix = "xxx")
@Data
public class DataSourceConfig {
private Map<String, String> yyy;
}
@TempDir临时目录注解,用于自动创建和清理临时目录
java
@Test
void testClearFiles(@TempDir Path tempDir) {
try {
for (int i = 1; i <= 4; i++) {
Path path = tempDir.resolve("tmpfile" + i);
Files.createFile(path);
}
} catch (IOException e) {
log.error("create files failed: {}", ExceptionUtil.getExceptionInfo(e));
}
FileAgeUtil.clearFiles(tempDir, 7L, ChronoUnit.DAYS, 3L);
long count = 0;
try (Stream<Path> paths = Files.walk(tempDir)) {
count = paths.filter(Files::isRegularFile).count();
} catch (IOException e) {
log.error("count files failed: {}", ExceptionUtil.getExceptionInfo(e));
}
Assertions.assertEquals(3, count);
}
通过Unsafe方法初始化对象
java
Field field = Unsafe.class.getDeclaredField("theUnsafe");
field.setAccessible(true);
Unsafe unsafe = (Unsafe) field.get(null);
MyClass myClass= (MyClass) unsafe.allocateInstance(MyClass.class);