Как использовать переменную из другого класса в модульном тестировании в Scala? - PullRequest
0 голосов
/ 01 марта 2019

Я хочу использовать переменную numberOwned из другого класса в моем тестовом файле в Scala.Как мне это сделать?

Вот что я пытался сделать.

TestEquipment.scala:

package tests
import clicker.equipment._
import org.scalatest._

class TestEquipment extends FunSuite {
    numberOwned = 0
        test("first test"){
    }
}

Equipment.scala

package clicker.equipment

abstract class Equipment{

var numberOwned = 0
var name: String = ""

def goldPerSecond(): Double

}

ФайлСправочник

src
 |_clicker
 |     |_ equipment
 |           |_Equipment.scala
 |_ tests
      |_ TestEquipment.scala

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Это не зависит от того, находится ли он в тесте: вам нужен экземпляр Equipment.

class TestEquipment extends FunSuite {
    val equipment: Equipment = ...    
    equipment.numberOwned = 0

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

В Scala вы можете сделать import equipment._ и обратиться к numberOwned напрямую, но это не меняет смысла.

Этот экземпляр может быть this, так какв ответе Скаджини, но семантически это не имеет особого смысла: ваш набор тестов - это оборудование?

0 голосов
/ 01 марта 2019

Поскольку у вашего абстрактного класса нет состояния, вы можете преобразовать его в Trait (Interface), а в 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"){
    }
}

Вы можете расширить свое TestEquipment с помощью FunSuite.и реализовать интерфейс оборудования.

Как уже упоминалось в комментариях, вы не можете наследовать от FunSuite и BaseClass одновременно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...