gpt4 book ai didi

java - 如何查明方法调用是否源自测试类

转载 作者:行者123 更新时间:2023-12-01 16:40:26 25 4
gpt4 key购买 nike

嗨...有什么方法可以查明方法调用是否源自测试类?如果它来自测试类...那么我需要为类中的变量初始化一些虚拟值。我想编写测试类,对源代码进行最小的更改......该类遵循单例模式。因此它的私有(private)构造函数被调用,该构造函数正在调用一些阻止我的测试的代码。所以我需要从私有(private)构造函数中调用我的虚拟方法,以便它顺利工作..

目前我正在做这个...

StackTraceElement[] stack = new Throwable().getStackTrace();
boolean blnFrmTesting = false;
for (StackTraceElement stackTraceElement : stack) {
if(null != stackTraceElement && null != stackTraceElement.getFileName() && stackTraceElement.getFileName().endsWith("Test.java")) {
blnFrmTesting = true;
break;
}
}
return blnFrmTesting;

这是正确的方法吗...或者还有其他方法吗..比如检查注释...(​​"@Test")

最佳答案

好吧,对于技术部分,我建议您应该尝试查看类名是否包含 Test,而不是文件名,这(尽管 Java 规范试图对其进行规范化)总是有点更模糊(以内部类为例)。

但是,从更一般的角度来看,您的代码似乎忽略了测试框架(JUniot、TestNG)及其相关生态系统的存在,从而忽略了大约十年的 Java 工程。特别是,要定义“虚拟值”,模拟框架领域是最佳选择。目前有很多有趣的替代方案:

显然,它们可能会干扰你的单例(或不会)。但是,我必须告诉你,随着 IoC 框架的出现,单例模式现在通常被认为是已被弃用的。

关于java - 如何查明方法调用是否源自测试类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4223890/

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