Trong TestNg và Java, chúng ta có thể chạy nhiều trường hợp thử nghiệm bằng cách sử dụng DataProvider, và điều này chạy như các kiểm tra riêng biệt, có nghĩa là thực hiện kiểm tra không dừng lại trên thất bại. Có một tương tự cho ScalaTest hoặc Specs/Specs2?Scalatest hoặc specs2 với nhiều trường hợp thử nghiệm
Trả lời
Trong cả hai ScalaTest và specs2, thật dễ dàng để tạo các trường hợp thử nghiệm tại thời gian chạy, để tham số hóa chúng với dữ liệu. Dưới đây là một ví dụ với specs2:
class BasketSpecification extends Specification {
"a basket must contain fruits" >> {
Seq(apple, banana, orange) foreach { fruit =>
("it contains: " + fruit) >> {
basket must contain(fruit)
}
}
}
}
Sau đó, đầu ra là:
A basket must contain fruits
+ it contains: apple
+ it contains: banana
+ it contains: orange
Trong khi đặc điểm kỹ thuật sau:
class BasketSpecification extends Specification {
"a basket must contain fruits" >> {
Seq(apple, cake, orange) foreach { fruit =>
("it contains: " + fruit) >> {
basket must contain(fruit)
}
}
}
}
sẽ in ra một cái gì đó như:
A basket must contain fruits
+ it contains: apple
x it contains: cake
'basket' does not contain 'cake'
+ it contains: orange
Đọc lại câu hỏi của tôi. Phương pháp của bạn chạy như MỘT thử nghiệm, có nghĩa là một thất bại trong một trường hợp là một thất bại của thử nghiệm. trong TestNg, điều này sẽ được chạy như ba thử nghiệm, và do đó thông tin thất bại có ý nghĩa – user44242
Xin lỗi rằng không rõ ràng từ đặc điểm kỹ thuật chỉ là nó thực sự tạo ra 3 thử nghiệm. Tôi đã thêm đầu ra để hiển thị điều đó. – Eric
Xem cú pháp được cập nhật: http://etorreborre.github.io/specs2/guide/org.specs2.guide.Matchers.html#With+sequences –
Khái niệm đó được gọi là "shar kiểm tra ed "trong ScalaTest, bởi vì cùng một mã kiểm tra đang được" chia sẻ "bởi nhiều đồ đạc, trong đó" đồ đạc "là" dữ liệu "trong phương pháp DataProvider của TestNG. Có một cách để làm điều này cho mỗi đặc điểm phong cách trong ScalaTest thể hiện các bài kiểm tra như các hàm. Dưới đây là một ví dụ cho WordSpec:
http://www.scalatest.org/scaladoc-1.6.1/#[email protected]
Bạn có thể cách khác chỉ cần sử dụng một vòng lặp for để đăng ký mã kiểm tra tương tự cho các điểm dữ liệu khác nhau. Đây đã đưa ra trong một cuộc thảo luận email đó là ở đây:
http://groups.google.com/group/scalatest-users/browse_thread/thread/7337628407b48064#
Các mã vòng lặp trong trường hợp đó trông giống như:
for (browser <- List("IE", "Chrome", "Firefox")) {
test(browser + ": test one") { driver =>
info("Testing using " + driver)
}
test(browser + ": test two") { driver =>
info("Testing using " + driver)
}
test(browser + ": test three") { driver =>
info("Testing using " + driver)
}
test(browser + ": test four") { driver =>
info("Testing using " + driver)
}
test(browser + ": test five") { driver =>
info("Testing using " + driver)
}
}
}
Điều này thực sự đăng ký 15 bài kiểm tra, năm kiểm tra cho mỗi tài xế trình duyệt. Điều này tôi tin là những gì bạn đang sau.
- 1. Các trường hợp thử nghiệm với JIRA hoặc Confluence
- 2. Tích hợp các trường hợp thử nghiệm PHPT với PHPUnit
- 3. Trường hợp thử nghiệm riêng biệt trên nhiều tệp trong thử nghiệm google
- 4. Tổng hợp nhiều trường hợp thử nghiệm từ nhiều mô-đun để chạy trong PyDev TestRunner
- 5. Chạy thử nghiệm với hơn một triệu trường hợp thử nghiệm
- 6. Không bao gồm thử nghiệm ScalaTest khi gọi thử nghiệm của tôi từ bên trong sbt
- 7. Chạy cùng một trường hợp thử nghiệm JUnit nhiều lần với các dữ liệu khác nhau
- 8. Thử nghiệm tích hợp Grails với nhiều dịch vụ
- 9. Trường hợp thử nghiệm junit máy phát điện
- 10. Ghi thử nghiệm Selen cho các trường hợp thử nghiệm Plone chức năng
- 11. Cách đặt chuỗi trường hợp thử nghiệm trong xUnit
- 12. Trường hợp Thử nghiệm Selenium so với Test Suite so với cách sử dụng chung
- 13. Trong Eclipse, làm thế nào để chạy một trường hợp thử nghiệm JUnit nhiều lần
- 14. Có thể chạy thử nghiệm đơn vị Rails trên môi trường khác với thử nghiệm không?
- 15. Trường hợp thử nghiệm ngữ pháp BNF thế hệ
- 16. Thử nghiệm nhiều lớp với PHPUnit
- 17. Trường hợp thử nghiệm GWT không chạy: JUnitFatalLaunchException
- 18. Làm cách nào để chạy nhiều trường hợp thử nghiệm Python trong một vòng lặp?
- 19. Thử nghiệm tích hợp với Hibernate Envers
- 20. Máy phát hiện trường hợp thử nghiệm đơn vị
- 21. Trường hợp thử nghiệm Spring JUnit không thành công
- 22. Sau khi chạy thử trường hợp junit, tôi có nên xóa dữ liệu thử nghiệm liên quan đến trường hợp thử nghiệm này không?
- 23. Đồ đạc thử nghiệm hoặc tương đương với dữ liệu thử nghiệm với Smalltalk Seaside?
- 24. Làm thế nào để thực hiện Play Framework với thử nghiệm AngularJS e2e hoặc với thử nghiệm Play
- 25. Thông báo logger thử nghiệm đơn vị sử dụng specs2 + scalalogging
- 26. Làm thế nào để ngăn chặn 'quá thử nghiệm' trong một trường hợp thử nghiệm? (C#/nUnit)
- 27. Xác nhận nhiều điều kiện trong một thử nghiệm đơn lẻ hoặc chia thành nhiều thử nghiệm?
- 28. làm thế nào để tổ chức các trường hợp thử nghiệm với boost :: test library?
- 29. TDD: Có hợp lý để thử nghiệm tích hợp, nhưng không có thử nghiệm đơn vị?
- 30. Thử nghiệm với Thread.sleep
Câu hỏi khó hiểu. Vui lòng cung cấp ví dụ về ý của bạn. –