2009-03-31 19 views
11

Có ai biết nếu có cách nào để sử dụng TestNG DataProvider cùng với thử nghiệm cùng một lúc khi sử dụng chú thích @Parameter? Các bộ thử nghiệm của chúng tôi có một số thông tin cấu hình không đổi đang được truyền đến các phương pháp thử thông qua chú giải @Parameter. Bây giờ chúng tôi muốn sử dụng một DataProvider để chạy các thử nghiệm này trên một tập hợp các giá trị dữ liệu.Có thể sử dụng TestNG DataProvider VÀ tham số bộ kiểm tra không?

Tôi hiểu vấn đề nội bộ của việc xác định thứ tự các tham số kết quả sẽ ở nhưng chúng tôi cần tính năng này nếu có thể.

Mọi suy nghĩ?

Trong một thế giới lý tưởng, tôi có thể làm một cái gì đó như thế này:

@Test(dataprovider = "dataLoader") 
@Parameters("suiteParam") 
public void testMethod(String suiteParam, String fromDataParam) { 
... 
} 

Trả lời

8

Hey, nó có thể là một chút thời gian nhưng tại sao bạn không sử dụng một phương pháp @BeforeClass để lưu trữ các suiteParam cục bộ trên một lĩnh vực của lớp kiểm tra như vậy.

private String suiteParam; 

@BeforeClass 
@Parameter("suiteParam") 
public void init(String suiteParam) { 
    this.suiteParam = suiteParam; 
} 

Bằng cách này bạn có thể sử dụng nhà cung cấp dữ liệu theo cách thông thường và vẫn có quyền truy cập vào bộ tham số.

2

Có, bằng cách sử dụng TestNG's dependency injection capabilies. Bạn có thể truy cập tất cả các tham số được xác định trong DataProvider của bạn. Đây là một số ví dụ DataProvider có nhu cầu tham số test_param:

@DataProvider(name = "usesParameter") 
public Object[][] provideTestParam(ITestContext context) { 
    String testParam = context.getCurrentXmlTest().getParameter("test_param"); 
    return new Object[][] {{ testParam }}; 
} 

Bằng cách này bạn có thể thu thập được cấu hình và tạo ra các thông số trong một DataProvider sau đó được sử dụng để thử nghiệm. Xem TestNG JavaDoc để biết chi tiết về lớp ITestContext.

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