JUnit 测试之邪门歪道

目录
Java 单元测试一般使用 JUnit,但是总有些接口测试不便,需要特殊操作,当然可能如下方法并不被提倡,只作不时之需。
生成临时测试文件
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 设置
Properties props = new Properties();
props.setProperty("XXXX", "/xxx/xxx/xxx.properties");
System.setProperties(props);
解除保护重新加载
有时测试需要重新加载 static 方法,可使用反射办到,如下:
// 需要测试或使用的类
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);
}
}