Java 对具有相同项目的不同版本的所有子目录运行JUnit测试

Java 对具有相同项目的不同版本的所有子目录运行JUnit测试,java,eclipse,testing,junit,Java,Eclipse,Testing,Junit,假设我在一个父目录下的50个不同目录中有50个相同项目的不同版本。我已经编写了JUnit测试来测试每个目录中的项目,效果非常好。但问题是我必须运行50次才能得到测试结果 有没有什么方法可以让它自动在父目录下的所有子目录上运行测试 我现在正在使用Eclipse。但愿意切换到Netbeans或任何其他工具,但更喜欢Windows操作系统 注意:我将用它来给java编程作业评分。这意味着我在一个父目录下的50个不同目录中有50份提交。我已经写了测试用例来给每个提交的内容打分。现在我必须导入每个项目并手

假设我在一个父目录下的50个不同目录中有50个相同项目的不同版本。我已经编写了JUnit测试来测试每个目录中的项目,效果非常好。但问题是我必须运行50次才能得到测试结果

有没有什么方法可以让它自动在父目录下的所有子目录上运行测试

我现在正在使用Eclipse。但愿意切换到Netbeans或任何其他工具,但更喜欢Windows操作系统

注意:我将用它来给java编程作业评分。这意味着我在一个父目录下的50个不同目录中有50份提交。我已经写了测试用例来给每个提交的内容打分。现在我必须导入每个项目并手动运行测试用例。现在我想将其自动化以减少时间。

您可以创建自己的。它扫描50个目录,或执行50次相同的测试用例,但针对不同的类路径。

服务器就是为了实现这一点而设计的——管理自动测试的运行

有没有什么方法可以让它自动在父目录下的所有子目录上运行测试

每个中端服务器都应该为您提供所有这些功能。由于您已经标记了Java,最常见的是:

您不需要有50个不同的作业/构建,只需将项目路径作为param传递给构建即可。
例如,詹金斯支持

要从命令行运行JUnit,您需要在类路径上放置三件事:

  • junit.jar的
  • 你的测试班
  • 要测试的类版本
  • 可以这样做(假设您所在的目录中有要测试的版本):

    由于您在Windows上,您可能只想使用
    FOR
    来自动执行此操作(此处假设版本子目录位于
    C:\versions\
    目录中:

    FOR /D %F IN (C:\versions\*) DO java -cp .;C:\path\to\junit.jar;%F org.junit.runner.JUnitCore TestClass
    

    这将在所有版本子目录中循环,并在每个子目录中运行您的测试类。

    可能的重复我没有为同一项目使用不同的包。同一项目的不同版本位于不同的目录中。听起来您必须在自己的类路径中运行每批测试,其中包括您当前正在测试。但是我不知道当前有哪一个IDE支持这样的功能。也许您可以创建自己的类,该类迭代版本目录,为每次运行定义类路径,并调用JUnit…将所有50个解决方案提交为同一项目的50个分支(例如git)并运行完全相同的build+tes如何eclipse之外的作业是否在两者之间切换分支?因此,您的测试源代码树保持静态,并且主源代码树在分支之间变化。这将需要几行脚本。我认为没有现成的解决方案,但bash中有一个脚本(windows上的gitbash shell)或者python应该非常简单。不假装是任何脚本语言,但算法应该是这样的:
    for project in names
    git checkout$project
    mvn clean build>。/$project results
    。我甚至可以为您编写脚本,如果您想在bash中使用,您只需要git和gitbash for windowsI就可以测试它谢谢!我刚刚更新了
    示例,我忘记了
    %F
    参数。顺便说一句,请确保在这两个位置都使用
    %F
    ,因为它区分大小写。或者如果您愿意,可以使用
    %F
    :)我使用以下命令一次执行一个版本:java-cp。;“C:\ProgramFiles\NetBeans 8.0\platform\modules\ext\junit-4.10.jar”;C:\Test\HW4Test org.junit.runner.JUnitCore HW4Test但是它给出了一个错误,说NoClassDefFoundError:HW4Test$1Hmm我假设您首先编译了类。那个目录里有什么?只有我要测试的类的java文件。我还将测试类的编译类文件放入了测试类中,但它表示测试类为NoClassDefFoundError。
    FOR /D %F IN (C:\versions\*) DO java -cp .;C:\path\to\junit.jar;%F org.junit.runner.JUnitCore TestClass