如何运行所有修改过的JUnit测试类?

时间:2017-05-23 13:53:52

标签: java git intellij-idea junit

我有一个IntelliJ项目,版本为git。

如何运行自上次提交以来我修改过的所有JUnit测试类?

4 个答案:

答案 0 :(得分:6)

Project tool window中有已更改文件预定义范围,可用于查看所有已更改的文件。从那里选择所有JUnit类,并从上下文菜单中创建JUnit Run / Debug Configuration,它将填充类模式以自动运行。

答案 1 :(得分:1)

如果你的堆栈是由 GIT 和 maven 组成的 我们想出了这个 shell 脚本,它附加在我们的 Jenkins 编译作业的末尾:

for s in `git diff --name-only HEAD~`
do
if [[ $s == *".java" ]]; then
  s=$(echo $s | tr '/' '.')
  s=$(echo ${s%.java})
  s=${s/.java/}
  s=${s/src./}Test
  echo "will test : $s"
  mvn -Dtest=$s  -DfailIfNoTests=false -Dfile.encoding=UTF-8 test-compile surefire:test
fi
done

说明:

Get the last commited files
for each
 if it is a java file
   convert name (in unix format) to FQN Test class name without extension
   run the maven test target

注意:我们用于测试的文件名遵循在类文件名末尾附加 Test 的约定。适应你自己的约定

答案 2 :(得分:0)

我不相信你可以使用任何“开箱即用”的解决方案。但是,您可以使用您选择的语言编写脚本,以查找“可以执行的最后一次提交中更改的文件”

git diff --name-only HEAD~

HEAD~是对'倒数第二'提交的引用,只指定git diff命令的一个提交引用将自动与最新提交的HEAD进行比较。

你可以获取它的输出并迭代它,也许如果你的测试类遵循类的命名方案来测试通过为每个文件指定模式来执行测试?

答案 3 :(得分:0)

该库似乎提供了类似的功能:https://github.com/rpau/junit4git

  

这是一个JUnit扩展,它将忽略那些与您Git存储库中的最后更改无关的测试。