2010-06-06 44 views
15

我正在学习Scala,并希望在Eclipse中设置集成的单元测试。 据我可以从谷歌搜索可以看出,ScalaTest是要走的路,可能与JUnit组合。你如何在Eclipse中测试Scala?

在Eclipse中对单元测试Scala有什么经验?我应该使用JUnit跑步者还是其他?

+2

我还没有尝试过,但这里有一些文档:https://www.assembla.com/wiki/show/scala-ide/Using_Unit_Testing_Frameworks – 2010-06-06 15:16:33

+1

@Matt谢谢,这是有效的 - 你应该添加它作为答案,实际上。 – 2010-06-06 20:18:39

回答

5

只是为了让答案保持最新:ScalaTest现在带有一个eclipse plugin,它应该可以从Eclipse开箱即可处理运行测试。

6

我无法在eclipse中使用JUnit runner运行ScalaTest规范。我认为这是因为缺少@Test注释的方法。但是,如果您的项目具有Maven支持,则可以使用mvn test从命令行运行您的规格。对于Surefire插件来检测您的规格,请在您的pom文件中使用以下配置。

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-surefire-plugin</artifactId> 
    <version>2.5</version> 
    <configuration> 
    <includes> 
    <include>**/*Spec.class</include> 
    </includes> 
    </configuration> 
</plugin> 

检查出these example作为参考。

+0

这已得到改进 - 请参阅@ Eric的指向该网站的指示:http://www.assembla。com/wiki/show/scala-ide/Using_Unit_Testing_Frameworks – 2012-06-13 15:43:41

1

我无法从Eclipse运行单元测试(虽然我没有太努力),但是如果你愿意从IDE内部看看IntelliJ ScalaTest的工作原理而不会出现任何问题。

+0

事实证明,JUnit runner在Eclipse中为我开箱即用。我只需导入正确的软件包并在测试方法之前写入@test,就像在Java中一样。尽管如此,还没有尝试过ScalaTest。 – 2010-06-10 08:46:42

+0

我强烈推荐使用IntelliJ,当我开始使用scala进行单元测试时(http://www.persistentpanda.com/2011/03/unit-testing-with-scala.html),Eclipse给我的唯一一件事就是头疼。尤其是Maven项目。 – 2011-04-01 12:23:45

2

我花了几天的时间试图找到与我的项目的scala一起工作的单元测试的组合,这就是我发现的。

我正在使用Scala 2.8的候选版本,因为它修复了一些在2.7.2中阻止我的bug。我最初试图让Scalatest与2.8一起工作,但未能找到一个稳定的解决方案,未来可能是一个更好的方法,但目前在2.8版本中似乎有太多的变化。

我有工作的配置是使用JUnit4注解在我的斯卡拉测试代码如下所示:

 
import org.junit._ 

import Assert._ 

class TestSuite{ 

    @Test def testSimple(){ 
    asserEquals("Equal",1,1) 
    } 
} 

然后我使用的是Java的JUnit测试套件来运行我的所有测试在一起,就像这样:

 
import junit.framework.Test; 
import junit.framework.TestSuite; 
import org.junit.runner.RunWith; 
import org.junit.runners.Suite; 

@RunWith(Suite.class) 
@Suite.SuiteClasses({ 
    TestSuite.class 
    }) 
public class AllTests { 

    public static Test suite() { 
    TestSuite suite = new TestSuite("Test Suite"); 
    return suite; 
    } 

} 

唯一的附加技巧是将输出目录添加为Eclipse中的源目录,以便JUnit运行器可以找到您的类文件。这有点破解,但似乎有效。

Project-> Properties-> Java Build Path-> Source-> Add Folder然后点击类(或bin,无论你在编译你的类文件到哪里)。

这对AllTests.java运行正常在Eclipse中通过右击并选择RunAs->的Junit

+0

我发现只要右键单击包含带注释的测试代码的scala文件,并选择RunAs-> Junit,前提是我已经为JUnit添加了库引用。 – 2010-07-09 17:45:47

+0

是的,这似乎也适用于我,但对于我的项目运行一整套测试更有用。当我尝试使用JUnit4注释创建一个.scala文件来创建我的测试套件时,它不起作用。 – gbrown 2010-07-09 18:13:32

7

有上how to run Scala unit tests in Eclipse的ScalaIDE网站上的维基页面。如果您在运行规格单元测试时遇到特定问题,我鼓励您在specs-users邮件列表上发布消息。

Eric。

+1

如果邮件列表对于每个人都是足够的,那么世界将不需要堆栈溢出 – 2014-04-08 03:38:46

+0

我同意,我自己不是一个非常有用的答案:-) – Eric 2014-04-08 03:51:59