Я использую specs2, и я понимаю, что must
и should
эквивалентны (см. What is the difference between should and must in scala testing?), и использование того или другого является только личным предпочтением.Specs2 сравнение строк не работает с
Однако при сравнении строк, следующий тест с использованием must
работы:
import org.specs2.mutable._
class StringEqualWithMust extends Specification {
"string comp " should {
"abc" must beEqualTo("abc")
}
}
Но тот же самый тест с использованием should
не скомпилируется:
import org.specs2.mutable._
class StringEqualWithShould extends Specification {
"string comp " should {
"abc" should beEqualTo("abc")
}
}
Ошибка компиляции:
StringEqualWithShould.scala:7: overloaded method value should with alternatives:
[error] (fs: => org.specs2.specification.core.Fragments)(implicit p1: org.specs2.control.ImplicitParameters.ImplicitParam1)org.specs2.specification.core.Fragments <and>
[error] (f: => org.specs2.specification.core.Fragment)org.specs2.specification.core.Fragment
[error] cannot be applied to (org.specs2.matcher.BeEqualTo)
[error] "abc" should beEqualTo("abc")
[error] ^
[error] one error found
Почему существует разница между must
и should
при сравнении строк?
Я использую SBT 0.13.8, 2.12.0, Скалы и specs2 3.8.6
Ожидаемая структура для изменяемого спецификации является 'should' (>' '>>)>' в' и 'must' с совпадением – cchantep
Какую версию specs2 вы используете? Можете ли вы попробовать с '3.8.6'? – Eric
Тот же результат с версией 3.8.6 – obourgain