Можно ли использовать синтаксис BDD ScalaTest в среде JUnit? - PullRequest
6 голосов
/ 02 января 2011

Я хотел бы описать тесты в стиле BDD, например, с FlatSpec, но сохранить JUnit в качестве бегуна.

В быстром запуске ScalaTest, похоже, не показано ни одного примера:1005 *http://www.scalatest.org/getting_started_with_junit_4

Сначала я наивно пытался написать тесты с использованием @Test методов, но это не сработало, и утверждение никогда не проверялось:

@Test def foobarBDDStyle {
    "The first name control" must "be valid" in {
        assert(isValid("name·1"))
    }
    // etc.
}

Есть ли способ добиться этого??Было бы еще лучше, если бы регулярные тесты можно было смешивать и сопоставлять с тестами в стиле BDD.

Ответы [ 2 ]

11 голосов
/ 02 января 2011

Вероятно, вы захотите сделать это, используя аннотацию @RunWith, например:

import org.junit.runner.RunWith
import org.scalatest.junit.JUnitRunner
import org.scalatest.FlatSpec

@RunWith(classOf[JUnitRunner])
 class MySuite extends FlatSpec {
   "The first name control" must "be valid" in {
        assert(isValid("name·1"))
    }
 }

JUnit 4 будет использовать JUnitRunner от ScalaTest для запуска FlatSpec в качестве набора тестов JUnit.

6 голосов
/ 02 января 2011

Вам не нужно иметь аннотации def s и @Test. Вот пример:

import org.scalatest.junit.JUnitRunner
import org.junit.runner.RunWith
import org.scalatest.FlatSpec
import org.scalatest.junit.ShouldMatchersForJUnit

@RunWith(classOf[JUnitRunner])
class SpelHelperSpec extends FlatSpec with ShouldMatchersForJUnit {

  "SpelHelper" should "register and evaluate functions " in {
    new SpelHelper()
      .registerFunctionsFromClass(classOf[Functions])
      .evalExpression(
        "#test('check')", new {}, classOf[String]) should equal ("check")
  }

  it should "not register non public methods " in {
    val spelHelper = new SpelHelper()
      .registerFunctionsFromClass(classOf[Functions])
    evaluating { spelHelper.evalExpression("#testNonPublic('check')",
      new {}, classOf[String]) } should produce [SpelEvaluationException]
  }
}

Источник

...