2017-05-21 27 views
6

Hầu như tất cả các ví dụ về các bài kiểm tra động mà tôi đã thấy, có thể được làm lại và viết bằng các bài kiểm tra tham số. Vì vậy, đó là một kịch bản thực tế mà các bài kiểm tra động là lựa chọn duy nhất, hoặc ít nhất, phù hợp hơn so với các bài kiểm tra tham số hóa.Thử nghiệm động khác với thử nghiệm tham số trong JUnit 5 như thế nào?

Ví dụ kiểm tra động "thực sự" duy nhất trong tài liệu JUnit 5 là không thực tế.

Bất kỳ ý tưởng nào?

+1

Câu hỏi hay. Vì nó là viết tắt của kiểm tra động thực sự không có một ứng dụng rõ ràng, đặc biệt là vì chúng không được hỗ trợ bởi một điểm mở rộng (xem [# 371] (https://github.com/junit-team/junit5/issues/371)) . – Nicolai

+0

Cảm ơn nhận xét của chúng tôi @Nicolai. Tôi đọc đầu vào của bạn và tôi nghĩ rằng tôi hiểu điểm của bạn là gì. Tuy nhiên, quan điểm của tôi ở đây không phải là về cách để tạo ra các bài kiểm tra động, chỉ để hiểu trường hợp sử dụng mà các bài kiểm tra động đặc biệt hữu ích. Tôi không chắc chắn cách thử nghiệm động được hỗ trợ tiện ích mở rộng sẽ trả lời câu hỏi này. Tôi muốn biết những vấn đề mà các nhà phát triển đang cố gắng giải quyết bằng cách giới thiệu các bài kiểm tra động. – Yasin

+1

Về sau: Thử nghiệm động đã được tạo dài trước khi thử nghiệm được tham số hóa. Lý do đưa chúng vào là đảm bảo rằng các nhà bảo trì công cụ nhận thức được thực tế là các thử nghiệm có thể được tạo ra trong thời gian chạy. Ồ, tôi nhớ rằng một lý do là cho phép [kiểm tra lambda] (https://blog.codefx.org/libraries/junit-5-dynamic-tests/#Lambda-Tests). – Nicolai

Trả lời

4

Không giống như DynamicTest, ParameterizedTest không phải là một phần của lõi junit-jupiter-api nhưng là trong một vật riêng biệt có tên junit-jupiter-params (xem 3.12.1. Required Setup). Điều này là do một trong những nguyên tắc cốt lõi của JUnit 5 là "thích các điểm mở rộng hơn các tính năng" (Core Principles · junit-team/junit5 Wiki).

API JUnit Jupiter xác định cách tạo và đăng ký thử nghiệm động làm điểm mở rộng cho JUnit trong khi JUnit Jupiter Params định nghĩa API cấp cao hơn để xác định các thử nghiệm được tham số hóa.

JUnit 5.0 M5 Milestone Chủ đề của hiện tại là "vùng chứa động và thay đổi API nhỏ". Với những thay đổi dự kiến ​​này, các nhà phát triển sẽ không chỉ có thể tạo ra các bài kiểm tra động mà còn là các bài kiểm tra động (các thùng chứa động chứa các thùng chứa và/hoặc kiểm thử động khác). Như vậy sẽ chứng minh, tôi nghĩ, rất hữu ích cho việc tạo ra các bài kiểm tra giống như đặc điểm kỹ thuật. Tóm lại, ý tưởng như tôi hiểu là lần đầu tiên phát hành các điểm mở rộng lõi thông qua các API "cấp thấp" (ví dụ: các thùng chứa/kiểm tra động) và sau đó tạo và khuyến khích các bên thứ ba tạo các tiện ích mở rộng tận dụng chúng (ví dụ: được tham số hóa kiểm tra).

+0

Bạn có thể vui lòng giải thích thêm về "Hỗ trợ cho các kiểm tra tham số sử dụng API thử nghiệm động dưới mui xe". Những gì tôi hiểu là các bài kiểm tra động không hỗ trợ gọi lại vòng đời, nhưng các thử nghiệm được tham số hóa thực hiện. Có lẽ tôi cần phải xem xét mã nguồn? – Yasin

+0

@Yasin, tôi không quen thuộc với _all_ của mã cho các bài kiểm tra tham số nhưng tôi biết rằng mỗi trường hợp thử nghiệm gọi ['TestExecutionListener.dynamicTestRegistered'] (http://junit.org/junit5/docs/current/api/org /junit/platform/launcher/TestExecutionListener.html#dynamicTestRegistered-org.junit.platform.launcher.TestIdentifier-). – mfulton26

+2

Sau khi suy nghĩ nó thông qua một số chi tiết mà tuyên bố không xuất hiện là hoàn toàn đúng sự thật. Cả hai API đều phễu vào cùng một mã nhưng chúng dường như độc lập với nhau hơn là tôi nghĩ ban đầu. – mfulton26

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