在运行时构建Java文件&在该类文件上运行JUnit测试

时间:2014-09-08 11:16:37

标签: java junit parameterized

我正在尝试构建一个动态Web项目,用户可以在其中练习Java代码。

我在用code文件.java编写了compile代码&使用error messages获取Java Compile API

现在,我需要对JUnit 1.4 Compatible运行code测试。

我研究了它,发现了parameterized junit testing之类的东西。但我对如何做到的看法还不清楚。

更新

这(http://codingbat.com/prob/p171896)是我试图实施的确切内容。

1 个答案:

答案 0 :(得分:0)

我通过以下步骤解决了这个问题:

  1. 编译JUnit TestClass和ClassToTest

    JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
    int compilerResult = compiler.run(null, null, null,"/path/to/TestClass.java", "/path/to/ClassToTest.java");
    System.out.println("Compiler result code: " + compilerResult);
    
  2. 将已编译的类加载到类加载器

    File dir = new File("/path/to/class/files/");
    URL url = dir.toURI().toURL();
    URL[] urls = {url};
    ClassLoader classLoader = new URLClassLoader(urls);
    
  3. 运行测试(确保将junit添加为项目的依赖项)

    Class<?> junitTest = Class.forName("TestClass", true, classLoader);
    Result result = junit.run(junitTest);
    
  4. 编辑:如果您不需要JUnit测试是动态的,您可以跳过这些测试的编译并在此处添加它们:junit.run(JunitTest.class)