【问题标题】:Running test case in Scala gives "discarded non-Unit value"在 Scala 中运行测试用例会给出“丢弃的非单元值”
【发布时间】:2023-03-22 00:00:01
【问题描述】:

我是 scala 的新手

我的 sbt 版本是:0.13.17

我的 Scala 版本是:Scala 代码运行器版本 2.12.6 -- 版权所有 2002-2018,LAMP/EPFL 和 Lightbend, Inc.

我正在尝试使用以下代码运行测试用例

class TestSpec extends WordSpec with Matchers with MockFactory with OneAppPerSuite {

  "it" should {
    "add 2 numbers" in new Testing() {
      val a = 2
      val b = 3
      val expected = 5
      val result: Int = add(2, 3)

      result shouldEqual expected
    }
  }

  trait Testing {

    def add(a: Int, b: Int): Int = {
      a + b
    }
  }
}

我得到以下错误

discarded non-Unit value
 "add 2 numbers" in new Testing() {

在我的 build.sbt 文件中我看到了这个

"-Ywarn-value-discard", // 非Unit表达式结果未使用时警告

我无法删除上面的行以及如何确保我的测试用例执行。

我已经浏览了这个链接 Suppress "discarded non-Unit value" warning。但不确定需要做什么。 任何帮助都非常感谢

【问题讨论】:

  • 如果这只是一个警告,您的测试还在运行吗?或者这实际上阻止了您的测试工作?
  • @JamesWhiteley 我的测试已停止。我收到错误而不是警告

标签: scala sbt scalatest


【解决方案1】:
I just tried something like ... And it works.

class Testclass extends  FlatSpec with Matchers  with TestTrait {
  it should "add two integers" in  {
      val a: Int =  2
      val b: Int =  3
      val result = add(a, b)
      result shouldEqual(5)
    }
}

trait TestTrait {
  def add(a: Int, b: Int):Int = {
     a + b
  }
}

【讨论】:

    【解决方案2】:

    禁用 -Ywarn-value-discard in scalacOptions

    【讨论】:

      【解决方案3】:

      出现此警告是因为未使用分配的值 a 和 b。也许你的意思是写:

      val result: Int = add(a, b)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-05
        • 1970-01-01
        • 2020-09-06
        • 1970-01-01
        • 1970-01-01
        • 2022-01-02
        • 1970-01-01
        • 2023-03-18
        相关资源
        最近更新 更多