java - Java 单元测试能否像 .NET 那样隐藏生产代码的接缝接口(interface)?

标签 java unit-testing

正如我从 Art of unit test 中读到的那样,我知道 .NET 可以隐藏 seam 方法以在生产运行时进行测试。 (p.78~p.80)。 比如,

public class LogAnalyzer
{
...
internal LogAnalyzer (IExtensionManager extentionMgr)
{
manager = extentionMgr;
}
}

像这样跑。

using System.Runtime.CompilerServices;
[assembly:
InternalsVisibleTo("AOUT.CH3.Logan.Tests")]

因此 LogAnalyzer() 只能为测试类调用,无需担心为了可测试性而在生产代码上增加额外成本。 经过简短的调查,似乎 Java 没有等效的功能。 但是 Java 有替代品吗? 谢谢。

最佳答案

如何实现您自己的自定义 ClassLoader ?您可以定义自己的注释,如 @HideFromProductionCode,并让您的自定义 ClassLoader 在加载具有 @HideFromProductionCode 注释的类时抛出异常。参见 How to set my custom class loader to be the default?

或者,只需将一个脚本添加到您的构建过程中,它会遍历所有已编译的生产代码并查找 @HideFromProductionCode 注释。

关于java - Java 单元测试能否像 .NET 那样隐藏生产代码的接缝接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11635962/

相关文章:

java - 如何将C风格的二进制 float 组读入Java?

java - java mail api PasswordAuthentication 方法中出现错误

javascript - 如何测试YUI3的get()方法返回的值?

javascript - [node][mocha]使用 mocha 测试时无法访问全局变量

unit-testing - 如何使用 sinon stub 匹配对象的某些值

Java 属性绑定(bind)

java - 让两个类在 Java 中协同工作

java - 从今天日期删除日期或星期或月份的代码

python - 将 float 组转换为小/大端

python - Django 测试显示导入错误,但项目通过运行服务器成功运行