目录

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);
	}
}