为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Scala 的单元测试中利用来自不同类的变量?

如何在 Scala 的单元测试中利用来自不同类的变量?

幕布斯7119047 2022-07-14 16:20:17
我想numberOwned在 Scala 的测试文件中使用来自不同类的变量。我怎么做?这是我尝试的。测试设备.scala:package testsimport clicker.equipment._import org.scalatest._class TestEquipment extends FunSuite {    numberOwned = 0        test("first test"){    }}设备.scalapackage clicker.equipmentabstract class Equipment{var numberOwned = 0var name: String = ""def goldPerSecond(): Double}文件目录src |_clicker |     |_ equipment |           |_Equipment.scala |_ tests      |_ TestEquipment.scala
查看完整描述

2 回答

?
弑天下

TA贡献1818条经验 获得超7个赞

由于您的抽象类没有任何状态,您可以将其转换为 Trait(接口),在 Scala 中,您可以使用如下方法定义接口


trait Equipment{


  var numberOwned = 0

  var name: String = ""


  def goldPerSecond(): Double = {

      numberOwned

  }

}


 class TestEquipment extends FunSuite with Equipment {

    this.numberOwned = 0

        test("first test"){

    }

}

您可以使用 FunSuite 扩展您的 TestEquipment 并实现接口 Equipment。


如评论中所述,您不能同时从 FunSuite 和 BaseClass 继承。


查看完整回答
反对 回复 2022-07-14
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

它不取决于它是否在测试中:您需要一个Equipment.


class TestEquipment extends FunSuite {

    val equipment: Equipment = ...    

    equipment.numberOwned = 0


    test("first test"){ ... }

}

在 Scala 中,您可以直接执行import equipment._和引用numberOwned,但这不会改变含义。


这个实例可以是this,就像 skjagini 的回答一样,但它在语义上没有多大意义:你的测试套件是一种设备吗?


查看完整回答
反对 回复 2022-07-14
  • 2 回答
  • 0 关注
  • 75 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信