gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 11:42:35 24 4
gpt4 key购买 nike

正如我从 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com