У меня есть следующий класс, и я хочу написать некоторые тестовые примеры Spec, но я действительно новичок в этом, и я не знаю, с чего начать. Мой класс делает это следующим образом:Scala spec unit tests
class Board{
val array = Array.fill(7)(Array.fill(6)(None:Option[Coin]))
def move(x:Int, coin:Coin) {
val y = array(x).indexOf(None)
require(y >= 0)
array(x)(y) = Some(coin)
}
def apply(x: Int, y: Int):Option[Coin] =
if (0 <= x && x < 7 && 0 <= y && y < 6) array(x)(y)
else None
def winner: Option[Coin] = winner(Cross).orElse(winner(Naught))
private def winner(coin:Coin):Option[Coin] = {
val rows = (0 until 6).map(y => (0 until 7).map(x => apply(x,y)))
val cols = (0 until 7).map(x => (0 until 6).map(y => apply(x,y)))
val dia1 = (0 until 4).map(x => (0 until 6).map(y => apply(x+y,y)))
val dia2 = (3 until 7).map(x => (0 until 6).map(y => apply(x-y,y)))
val slice = List.fill(4)(Some(coin))
if((rows ++ cols ++ dia1 ++ dia2).exists(_.containsSlice(slice)))
Some(coin)
else None
}
override def toString = {
val string = new StringBuilder
for(y <- 5 to 0 by -1; x <- 0 to 6){
string.append(apply(x, y).getOrElse("_"))
if (x == 6) string.append ("\n")
else string.append("|")
}
string.append("0 1 2 3 4 5 6\n").toString
}
}
Спасибо!
Вы можете посмотреть документацию по specs2: http://etorreborre.github.com/specs2/ –
Предполагая, что вы просмотрели спецификации specs2. Учитывая ваш класс Board, вы хотите подтвердить, написав тесты, что ваш код ведет себя так, как вы ожидаете, путем вызова методов и проверки состояния или возвращаемых значений, как вы ожидаете. Посмотрите здесь несколько примеров https://github.com/mongodb/casbah/tree/master/casbah-gridfs/src/test/scala. Посмотрите также на это видео http://www.youtube.com/watch?v = lMyNRUuEvNU – foolshat
Спасибо, я посмотрел, но все равно не понимаю! Можете ли вы дать мне пример для класса платы? класс BoardSpec распространяется СпецификацияWithJUnit { } – user1137701