gpt4 book ai didi

java - 动态检索 JUnit 类

转载 作者:行者123 更新时间:2023-11-29 08:03:17 26 4
gpt4 key购买 nike

我想从从用户输入收集的外部位置实例化一个新的类对象。该程序询问用户文件在哪里,比如说/tmp/MyTestClass.java。然后我希望它获取该 .java 文件并使其成为程序中的可用类。所以我可以调用类似 MyClass = new MyTestclass() 的东西。我一直在环顾四周,似乎找不到答案,或者甚至可能找不到答案?任何信息都会有用。

谢谢!!

------------编辑----------------

我可能过度思考了我的问题。这是针对 JUnit 测试的(抱歉之前应该提到过)。下面是我用来拉入我的静态类的示例。我希望能够从用户输入中动态提取 JUnit 测试文件。 testcastjunit 是类的名称。我需要能够以编程方式从用户输入中获取类并运行测试用例。

org.junit.runner.Result result = JUnitCore.runClasses(**testcastjunit.class**);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}

最佳答案

如果我理解你的话,这就是你需要的:

JavaCompiler jCompiler = ToolProvider.getSystemJavaCompiler();
List<String> options = Arrays.asList(
"-d", "./bin/",
path+".java");
int compilationResult = jCompiler.run(null, null, null,
options.toArray(new String[options.size()]));
if (compilationResult == 0) {
mensaje = "Compiled the "+path+" to its .class";
ClassLoader cLoader = ClassLoader.getSystemClassLoader();
try {
cLoader.loadClass("THE CLASS");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
} else {
mensaje = "Couldnt compile.";
}

这对你有用:

  1. 它让java编译器编译一个类。
  2. 创建选项,-d 是编译后要放置 .class 的任何位置,第二个是 .java 文件的路径。
  3. 编译,如果编译成功则加载类。
  4. 开始使用您的类(class)!

关于java - 动态检索 JUnit 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13075370/

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