为什么使用“sbt test”命令无法执行junit测试?

18

我正在使用 sbt 版本为 0.13.2 的纯 Java 项目。

我的build.sbt文件中有以下行:

libraryDependencies ++= Seq("com.novocode" % "junit-interface" % "0.10" % "test")

我的测试看起来像这样:

import org.junit.Test;
import org.junit.Before;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import org.junit.Assert.*;

@RunWith(JUnit4.class)
public class ExampleTest{
    @Test
    public void firstTest(){
        org.junit.Assert.assertEquals("2.5 + 7.5 = 10.0", 2.5 + 7.5, 10.0, .1);
    }
}

当我在命令行中执行sbt test时,测试成功编译,但测试不会运行。它显示:

Compiling 1 Java source to [my path]/target/scala-2.10/test-classes...
...
[info] Passed: Total 0, Failed 0, Errors 0, Passed 0 
[success] Total time: 1 s, completed May 31, 2014 5:56:22 PM

有什么办法可以执行测试吗?


我和你一样遇到了同样的问题,junit-interface似乎无法正确处理RunWith属性。在我的情况下,我需要通过Junit参数来驱动我的测试。我所能找到的只有https://github.com/sbt/junit-interface/issues/66,希望它能尽快得到解决... - donhector
1
我甚至不知道“junit-interface”的存在。将其添加到我的sbt依赖项中使sbt test可以运行我的Java单元测试!谢谢。 - devdanke
1
关于如何在SBT中添加JUnit支持的相关问题 https://dev59.com/014c5IYBdhLWcg3wOoAH - Peter Lamberg
2个回答

1
当我移除@RunWith注解时,我的测试可以正常运行。我不知道为什么这样解决了问题。

1
可能是由于这个检查引起的吗? - Jacek Laskowski
1
顺便问一下,如果我的回答对您有帮助,能否批准一下呢?谢谢! - Jacek Laskowski

0
另一个尝试的方法是从命令行而不是交互式运行测试。由于某些原因,我发现这对我有用。
>sbt ProjectName/test 

不要交互式地进行,而是:

>sbt
>project ProjectName
>test

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接