JUnit 测试之邪门歪道

Java 单元测试一般使用 JUnit,但是总有些接口测试不便,需要特殊操作,当然可能如下方法并不被提倡,只作不时之需。

生成临时测试文件

1
2
3
4
5
6
7
8
9
10
11
12
13
File f = null;
try {
// tmp- 开头后接随机数字的 txt 文件,文件位置在 test 文件下
f = File.createTempFile("tmp-", ".txt", new File("test"));
BufferedWriter out = new BufferedWriter(new FileWriter(f));
out.write("Hello World!");
out.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 退出时删除文件
f.deleteOnExit();
}

Properties 设置

1
2
3
Properties props = new Properties();
props.setProperty("XXXX", "/xxx/xxx/xxx.properties");
System.setProperties(props);

解除保护重新加载

有时测试需要重新加载 static 方法,可使用反射办到,如下:

1
2
3
4
5
6
7
8
9
10
11
12
// 需要测试或使用的类
ObjectXXX c = new ObjectXXX();
Method methods[] = ObjectXXX.class.getDeclaredMethods();
for(int i = 0; i < methods.length; i++) {
// 需要调用的方法名 XXX
if (methods[i].getName().equals("XXX")) {
// 如果该方法是 private 或者 protected 无法调用,设置为 true 即可解除保护
methods[i].setAccessible(true);
// 调用该方法
methods[i].invoke(c, args);
}
}

JUnit 测试之邪门歪道
https://wishlily.github.io/article/code/2020/09/15/junit-test/
作者
Wishlily
发布于
2020年9月15日
许可协议