标签: scalatest

用TDD学习Scala

我现在正在学习Scala.我看到有两个测试框架,ScalaTest和Specs.我唯一的问题是我还不能用语言来决定哪个更好.此外,我习惯在代码之前编写测试,目前我还不知道如何在函数式编程中进行测试.理想情况下,我想以TDD方式学习Scala,有没有关于它的资源?

tdd specs scala scalatest

11
推荐指数
1
解决办法
4653
查看次数

如何使用一个scala库进行maven/eclipse/scala

我已经配置了一个项目来使用scala/maven/Eclipse.因为我需要在构建路径上使用scala库,而scalatest也使用自己的scala库,我收到此警告:

在构建路径中找到多个scala库,所有这些库都具有兼容版本.这不是最佳配置,尝试限制构建路径中的一个scala库.

我不认为我可以删除此警告,因为我需要两个库 - 一个用于Maven,另一个用于Eclipse.这似乎没有造成任何问题,所以我只能接受它吗?是否有一个替代配置,它只为Maven和Eclipse使用一个scala库?

如果我从项目中删除scala库,我收到错误:

在类路径上找不到Scala库.验证您的构建路径!

出于某种原因,Eclipse要求scala库位于构建路径上,即使它已作为Maven依赖项可用.

eclipse scala maven scalatest eclipse-indigo

11
推荐指数
1
解决办法
8457
查看次数

如何在IntelliJ IDEA中的每个代码更改上运行测试?

我在IntelliJ IDEA中设置了一个新的Scala/sbt项目,其中ScalaTest和jUnit接口已成功安装为依赖项.当我点击运行或调试时,我有一个测试通过.

我的问题是,如果我改变了某些东西,它就不会重新运行.我必须再次运行或调试然后运行并给出预期的响应.

每次代码更改时,如何设置IntelliJ IDEA(带或不带sbt)来运行所有测试?是否可以运行与仅更改的文件相关的测试?

scala intellij-idea sbt scalatest

11
推荐指数
1
解决办法
1079
查看次数

如何使用intellij运行所有scalatest的多模块sbt?

我可以跑:

  1. 特定的scala测试
    • 通过右键单击测试并选择 run
    • 或者,如果我之前已经运行过一次,则选择运行菜单中的测试> run...
  2. 我可以运行通过使所有JUnit测试新run/debug configuration> +>的junit> test kind = all in package>search for tests = in whole project
  3. 我可以运行一个子项目的所有scalatest(或junit):右键单击[模块名称]中的项目> run> scalatest

但是,如果我使用scala测试(+> scala测试>测试种类......)执行相同的(2),第一次测试失败非常奇怪(似乎object没有实例化),而相同的测试通过,如果我使用它运行它(1)或(3)

配置:

  • sbt有多个子项目
  • intellij CE 15.0.2
  • scala插件2.1.0
  • 斯卡拉2.10

奖金问题:如何运行所有测试(junit和scalatest)?

scala intellij-idea scalatest

11
推荐指数
1
解决办法
720
查看次数

Scala测试与类型浓缩

例如,我已经变得依赖于类型丰富

object MyImplicits{
  implicit class RichInt(i: Int){
    def complexCalculation: Int = i * 200 
  }
}
Run Code Online (Sandbox Code Playgroud)

我在这样的代码中使用的

object Algorithm{
  def apply(rand: Random) = {
    import MyImplicits._
    rand.nextInt.complexCalculation + 1
  }
}
Run Code Online (Sandbox Code Playgroud)

但是我现在如何隔离和单元测试算法呢?特别是,我想嘲笑这样的实现complexCalculation:

class MyAlgorithmTest extends FreeSpec with MockitoSugar{
  import org.mockito.Mockito.when

  "MyApgorithm" {
    "Delegates complex calculation" in {
      val mockRandom = mock[Random]
      when(mockRandom.nextInt()).thenReturn(1)

      // This wouldn't work, but is the kind of thing I'm looking for
      //when(1.complexCalculation).thenReturn(2)
      val expected = 1 * 2 + 1

      val result = MyAlgorithm(mockRandom) …
Run Code Online (Sandbox Code Playgroud)

unit-testing dependency-injection scala mockito scalatest

11
推荐指数
1
解决办法
496
查看次数

Scala中shouldBe和shouldEqual之间有什么区别?

我何时应该使用shouldBe,何时应该使用shouldEqual?

port shouldEqual 8000
port shouldBe 8000
Run Code Online (Sandbox Code Playgroud)

scala scalatest

11
推荐指数
1
解决办法
1887
查看次数

如何为intellij添加scala-test支持

如何使用intellij安装scala-test.intellij网站上的视频显示他们添加了一个库依赖项,scala-test显示在列表中.我没有那个,因为我需要先安装scala-test.scala网站上的快速入门似乎有一个jar文件的链接.我是否以某种方式配置IDE以将该jar文件指向为全局库?

scala intellij-idea scalatest

10
推荐指数
2
解决办法
6759
查看次数

Play应用中的specs/scalatest交互问题

我遇到了一个我无法解释的问题......在https://github.com/betehess/play-scalatest的项目中它是孤立的.

当我运行时test,sbt卡住一段时间然后抛出此异常:

> test
[error] Uncaught exception when running tests: java.net.ConnectException: Connection timed out
Exception in thread "Thread-1" java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(SocketInputStream.java:196)
    at java.net.SocketInputStream.read(SocketInputStream.java:122)
    at java.net.SocketInputStream.read(SocketInputStream.java:210)
    at java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2293)
    at java.io.ObjectInputStream$BlockDataInputStream.readBlockHeader(ObjectInputStream.java:2473)
    at java.io.ObjectInputStream$BlockDataInputStream.refill(ObjectInputStream.java:2543)
    at java.io.ObjectInputStream$BlockDataInputStream.skipBlockData(ObjectInputStream.java:2445)
    at java.io.ObjectInputStream.skipCustomData(ObjectInputStream.java:1941)
    at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1620)
    at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1915)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
    at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1990)
    at java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:500)
    at java.lang.Throwable.readObject(Throwable.java:914)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1017)
    at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1893)
    at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1798)
    at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350) …
Run Code Online (Sandbox Code Playgroud)

scala sbt scalatest playframework specs2

10
推荐指数
1
解决办法
788
查看次数

为什么我的Scalacheck/Scalatest PropertyCheckConfig被忽略了?

我有一个包含很多Scalacheck生成器的项目正在获取GeneratorDrivenPropertyCheckFailedException,并显示消息"在0次成功的属性评估后放弃.2个评估被丢弃了."

我想让它尝试评估它多次像500(默认值)会好,但我没有看到我的配置覆盖实际使用.

我将此代码添加到测试类中,我仍然得到完全相同的消息.我试过'sbt clean'只是为了确保那里没有发生奇怪的事情.

implicit override val generatorDrivenConfig = PropertyCheckConfig(minSuccessful = 1, maxDiscarded = 500, workers = 1)
Run Code Online (Sandbox Code Playgroud)

为什么我的Scalacheck/Scalatest PropertyCheckConfig被忽略了?

我正在使用Scalatest 2.2.1与Scalacheck 1.12.1和Scala 2.10.4

testing scala scalatest scalacheck

10
推荐指数
1
解决办法
2130
查看次数

将JUnit @Rule与ScalaTest一起使用(例如TemporaryFolder)

我希望能够使用JUnit规则,例如我们已经在内部开发的TemporaryFolder其他规则TestRule.实现这一目标的最佳方法是什么?我知道JUnitSuite但它似乎没有拿起@Rule注释.无论如何,我想使用不同的ScalaTest套件.

所以我的问题是:

  • ScalaTest套装是否支持JUnit规则?
  • 如果没有,是否有一个库可以使用Junit TestRule
  • 如果没有,如何TestRule在Scala测试中使用JUnit ?
  • 或者是否有更合适的Scala特定方法来完成什么TemporaryFolder,或者,例如,Stefan Birkner的系统规则提供的方法?

这是我尝试过的JUnitSuite:

class MyTest extends JUnitSuite {
  //@Rule
  //val temporaryFolder = new TemporaryFolder() // throws java.lang.Exception: The @Rule 'temporaryFolder' must be public.

  @Rule
  def temporaryFolder = new TemporaryFolder()

  @Test
  def test: Unit = {
    assert(temporaryFolder.newFile() !== null) // java.lang.IllegalStateException: the temporary folder has not yet been created
  }
}
Run Code Online (Sandbox Code Playgroud)

junit unit-testing scala scalatest

10
推荐指数
3
解决办法
4191
查看次数