当前位置: 首页 > 知识库问答 >
问题:

在使用带有Propspec和PropertyCheck的scalacheck时,如何让ScalaTest正确地报告测试结果?

孔君浩
2023-03-14

我想使用基于属性的测试来测试我的 scala 程序。我写道:

class MyProperties extends PropSpec with PropertyChecks {
    property("My property") {
        val myProperty: org.scalacheck.Prop = new MyProperty
        // some code I need to set myProperty
        myProperty.check
    }
}

但是这似乎是错误的,因为当我使用ScalaTest运行这个类时,我进入控制台:

Run starting. Expected test count is: 1
MyProperties:

! Falsified after 51 passed tests.
> ARG_0: myGeneratedArgument
- My property
Run completed in 1 second, 623 milliseconds.
Total number of tests run: 1
Suites: completed 1, aborted 0
Tests: succeeded 1, failed 0, canceled 0, ignored 0, pending 0
All tests passed.

所以问题是:我的财产是伪造的,但测试通过了!?!有人看到我的代码有什么问题吗?

谢谢…

编辑:我试图调用myProperty而不是myProperties。检查,但这并不是更好,因为这样,生成器似乎被忽略了(只启动了一个测试,而不是100个)。

共有2个答案

容寒
2023-03-14

在 ScalaTest 中,您需要使用检查器或属性检查。如果您正在执行传统的 ScalaCheck 属性,并且看起来确实如此,则应使用跳棋(如您所发现的那样)。我唯一要补充的是,你可以说检查而不是检查器:

class MyProperties extends PropSpec with Checkers {
    property("My property") {
        val myProperty: org.scalacheck.Prop = new MyProperty
        // some code I need to set myProperty
        check(myProperty)
    }
}

检查器的完整文档在这里:

http://doc.scalatest.org/2.0/index.html#org.scalatest.prop.Checkers

幸阳波
2023-03-14

最终,我找到了一种编写Scalatest所考虑的测试的方法。我使用Checkers Trait代替PropertyChecks:

class MyProperties extends PropSpec with Checkers {
    property("My property") {
        val myProperty: org.scalacheck.Prop = new MyProperty
        // some code I need to set myProperty
        Checkers.check(myProperty)
    }
}

我不确定这是最好的写作方式,但我得到了我想要的。当地:

*** FAILED ***
  GeneratorDrivenPropertyCheckFailedException was thrown during property evaluation.
   (MyProperties.scala:175)
    Falsified after 0 successful property evaluations.
    Location: (MyProperties.scala:175)
    Occurred when passed generated values (
      arg0 = myGeneratedArgument
    )

最后:

Run completed in 4 seconds, 514 milliseconds.
Total number of tests run: 1
Suites: completed 1, aborted 0
Tests: succeeded 0, failed 1, canceled 0, ignored 0, pending 0
*** 1 TESTS FAILED ***

如果有人能评估这个提议,我会很高兴^^

 类似资料:
  • 我参考DataframeGenerator示例编写了单元测试,该示例允许您动态生成模拟dataframes 在成功执行以下命令后 在运行以下命令之一时,我会得到输出中显示的错误 输出 null null EDIT-1 My unit-test类包含以下几个方法 而如下所示

  • 我刚刚通过Flutter upgrade更新到Flutter verison 0.8.2并更新了依赖项,在media_query.dart中出现编译时错误。以下是版本信息: 以下是我的实际错误:

  • 出身背景 我正在使用Exent Report Cucumber Adapter,用于我的基于Cucumber的测试自动化框架,该框架使用在JUnit上运行的Java构建。我正在为测试条件使用AssertJ断言。 脚本 其中一个测试场景需要测试网页上的所有链接。我已经为其编写了代码,并且运行良好。我正在对try块下的测试条件使用AssertJ断言,并捕获SoftAssertionError,以便我的

  • 我有一个混合的Java/Scala项目,包含JUnit和ScalaTest测试。使用scalatest插件,Gradle在中运行scalatest测试,但忽略中的JUnit测试。没有插件,Gradle运行JUnit测试,但忽略Scala。我错过了什么把戏? 我的: ETA:我知道有可能对Scala测试进行注释,以迫使它们与JUnit测试运行器一起运行。我正在寻找一个一站式的解决方案,它不需要编辑每

  • 我们使用gradle构建我们的Java项目,有些基于JDK7,有些基于JDK8。我知道org.gradle.java.home属性,但在我看来它有缺陷。 如果我在'~/.gradle/gradle.properties'中配置它,这将迫使我对所有gradle项目使用相同的JDK。 对此最好的解决方案/变通办法是什么?