gpt4 book ai didi

java - 使用类名 Java 获取对象的引用

转载 作者:行者123 更新时间:2023-12-01 23:32:37 26 4
gpt4 key购买 nike

我正在运行一个用@Test注释的方法,并且我想要获取对对象JunitCore的引用,该对象通过反射调用该方法。

如果可能的话,我怎样才能获得对该对象的引用?(可能是安全问题)

我尝试了 reflectionclassLoader 但无法使其工作。

谢谢

最佳答案

JUnitCoreJunit 测试的基本入口点。它的工作方式是找到作为 java 命令参数提供的类的 List ,并使用它们创建一个用于运行测试的 Runner案例。

在处理过程中,JUnitCore 中的 main 方法绝不会将其创建的 JUnitCore 实例的引用传递给任何其他对象。因此,它无法直接或通过反射检索。

JUnitCore如下

public static void main(String... args) {
runMainAndExit(new RealSystem(), args);
}

public static void runMainAndExit(JUnitSystem system, String... args) {
Result result= new JUnitCore().runMain(system, args);
system.exit(result.wasSuccessful() ? 0 : 1);
}

public Result runMain(JUnitSystem system, String... args) {
system.out().println("JUnit version " + Version.id());
List<Class<?>> classes= new ArrayList<Class<?>>();
List<Failure> missingClasses= new ArrayList<Failure>();
for (String each : args)
try {
classes.add(Class.forName(each));
} catch (ClassNotFoundException e) {
system.out().println("Could not find class: " + each);
Description description= Description.createSuiteDescription(each);
Failure failure= new Failure(description, e);
missingClasses.add(failure);
}
RunListener listener= new TextListener(system);
addListener(listener);
Result result= run(classes.toArray(new Class[0]));
for (Failure each : missingClasses)
result.getFailures().add(each);
return result;
}

... // and more

此实现中没有任何地方对作为参数传递的 this 的引用。因此,您无法获得对它的引用。

关于java - 使用类名 Java 获取对象的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19105651/

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