Intellij idea 基于用户文件运行测试的插件

Intellij idea 基于用户文件运行测试的插件,intellij-idea,intellij-plugin,Intellij Idea,Intellij Plugin,我正在为IntelliJ开发一个用于教学的插件,学生可以编写一些代码,老师可以编写测试,学生可以运行这些测试,看看他们是否都做得正确。如果我能将用户正在编写的文件作为一个java类来获取,这样我就可以从另一个函数中运行该类的函数,并像编写它一样对其进行测试,那就太好了 我现在拥有的: 在主工具栏中我有一个按钮,学生应该可以在这里运行测试。我有一个扩展了动作的类,现在我不知道应该在其中写什么: @凌驾 已执行的公共无效行动(行动事件e){ 我已经阅读IntelliJ文档一段时间了,现在我没有进一

我正在为IntelliJ开发一个用于教学的插件,学生可以编写一些代码,老师可以编写测试,学生可以运行这些测试,看看他们是否都做得正确。如果我能将用户正在编写的文件作为一个java类来获取,这样我就可以从另一个函数中运行该类的函数,并像编写它一样对其进行测试,那就太好了

我现在拥有的:

  • 在主工具栏中我有一个按钮,学生应该可以在这里运行测试。我有一个扩展了动作的类,现在我不知道应该在其中写什么:

    @凌驾 已执行的公共无效行动(行动事件e){

  • 我已经阅读IntelliJ文档一段时间了,现在我没有进一步的了解。我当然希望这里有经验的开发人员能给我一些提示


    提前非常感谢:)

    如果我理解正确,学生们将在IntelliJ的项目中编程

    然后,您可以使用
    AnActionEvent事件
    获取他们正在处理的项目的路径

    Project=event.getProject();
    字符串projectBasePath=project.getBasePath();
    
    您可以使用它将整个src文件夹发送到您的计算机,并执行您需要在那里执行的操作

    但是,听起来你也希望学生通过插件运行测试函数,或者让他们使用GUI选择一个文件,然后使用
    ProcessBuilder
    编译、运行、测试他们的Java类。您可以通过这种方式运行任何Windows/shell命令,并将输出导入IDE或您自己的工具窗口

    public void actionPerformed(anaactionevent事件){
    Project=event.getProject();
    字符串projectBasePath=project.getBasePath();
    ProcessBuilder pb=新的ProcessBuilder();
    pb.directory(projectBasepath);
    pb.command(“cmd”、“/k”、“javac src\*.java”)
    pb.重定向错误流(真);
    Process进程=pb.start();
    BufferedReader=newBufferedReader(newInputStreamReader(process.getInputStream());
    弦线;
    而((line=reader.readLine())!=null){
    系统输出打印项次(行);
    }
    int exitCode=process.waitFor();
    System.out.println(“\n包含错误代码:“+exitCode”);
    …//你还需要做什么
    }
    

    让我知道这是否有意义-如果你给我更具体的问题,也许我可以帮你更多。

    继续阅读文档…谢谢你的建议。我只是想请你原谅,但是我找不到一种方法来获取文档并从该文档创建一个普通的java类。我的意思是,获取文档不是问题,而是问题是调用用户在文档中编写的函数,并像运行我自己的函数一样运行它们。因此,您想将它们复制到您的计算机上并运行项目吗?这可能是一个选项。虽然可以通过我在插件中编写的一些代码来运行用户的代码,但为什么不通过JUnits正常运行它呢T
    }