2011-01-02 33 views
6

Tôi muốn mô tả các thử nghiệm theo kiểu BDD, ví dụ: với FlatSpec nhưng giữ JUnit như một Á hậu thử nghiệm.Có thể sử dụng cú pháp ScalaTest BDD trong môi trường JUnit không?

Các ScalaTest Quick Start dường như không hiển thị bất kỳ ví dụ về điều này:

http://www.scalatest.org/getting_started_with_junit_4

đầu tiên tôi đã cố gắng ngây thơ để viết bài kiểm tra trong vòng @Test phương pháp, nhưng điều đó không làm việc và khẳng định không bao giờ được thử nghiệm :

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

Có cách nào để đạt được điều này không? Sẽ tốt hơn nếu các xét nghiệm thông thường có thể được trộn lẫn và phù hợp với các xét nghiệm kiểu BDD.

Trả lời

11

Cách bạn có thể muốn làm điều đó là sử dụng các chú thích @RunWith, như thế này:

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 sẽ sử dụng JUnitRunner ScalaTest để chạy FlatSpec như một bộ kiểm tra JUnit.

+0

Có thể chạy tất cả ScalaTests với JUnitRunner theo mặc định không? Lý do: chúng tôi muốn chạy thử nghiệm từ Gradle, và rõ ràng, JUnitRunner cung cấp khả năng tích hợp tốt hơn. –

6

Bạn không cần phải có chú thích def s và @Test. Dưới đây là một ví dụ:

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] 
    } 
} 

Source

Các vấn đề liên quan