如果调试器附加到当前测试执行,是否有方法检查 JUnit 代码?
在 .NET/C# 中我知道这是可能的Debugger.IsAttached
.
用例是在附加调试器时更改或完全禁用测试超时,因为如果您只有大约 15 秒(定义的超时)来调试测试,这会非常烦人。
这不是 100% 的万无一失的方法,但您可以检查是否Java 调试线路协议 http://blog.ioactive.com/2014/04/hacking-java-debug-wire-protocol-or-how.html(JDWP) 处于活动状态,调试器使用它来连接到 JVM。这可以通过检查 JVM 的输入参数来完成,例如:
boolean isDebug() {
for(String arg : ManagementFactory.getRuntimeMXBean().getInputArguments()) {
if(arg.contains("jdwp=")) {
return true;
}
}
return false;
}
然而,如果其他人命名了某些内容,它可能会返回误报jdwp
或者该协议是否用于其他用途。此外,该命令将来可能会发生变化,这使得这很难保证故障安全。这种方法当然不是 JUnit 特有的,但由于 JUnit 在 JVM 中没有任何特权,所以这是很自然的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)