2011-12-12 13 views
16

Tôi đang sử dụng TestNG và có một bộ kiểm tra. Tôi muốn thực hiện một hành động trước mọi phương pháp thử nghiệm yêu cầu thông tin về phương pháp. Như một ví dụ đơn giản, nói rằng tôi muốn in tên của phương thức trước khi nó được thực thi. Tôi có thể viết một phương thức được chú thích bằng @BeforeMethod. Làm thế nào tôi có thể tiêm các thông số vào phương pháp đó?Có cách nào để lấy dữ liệu meta phương pháp khi sử dụng @BeforeMethod trong TestNG không?

Trả lời

13

Hãy xem phần dependency injection trong tài liệu. Nó nói rằng dependency injection có thể được sử dụng ví dụ trong trường hợp này:

Bất kỳ @BeforeMethod (và @AfterMethod) có thể khai báo một tham số có kiểu java.lang.reflect.Method. Tham số này sẽ nhận được phương pháp thử nghiệm sẽ được gọi sau khi kết thúc này @BeforeMethod (hoặc sau khi phương thức chạy cho @AfterMethod).

Vì vậy, về cơ bản bạn chỉ cần khai báo tham số kiểu java.lang.reflect.Method trong số @BeforeMethod và bạn sẽ có quyền truy cập vào tên của tên thử nghiệm sau đây. Một cái gì đó như:

@BeforeMethod 
protected void startTest(Method method) throws Exception { 
    String testName = method.getName(); 
    System.out.println("Executing test: " + testName); 
} 

Ngoài ra còn có một cách bằng cách sử dụng giao diện ITestNGMethod (documentation), nhưng như tôi không chắc chắn chính xác về cách sử dụng nó, tôi sẽ chỉ cho phép bạn có một cái nhìn vào nó nếu bạn đang quan tâm.

+0

Tôi đang chạy testcase tôi sử dụng dữ liệu cung cấp với nhiều bộ dữ liệu, vì vậy trong báo cáo mức độ nó hiển thị cùng một phương pháp đang chạy nhiều thời gian như nhiều thời gian chúng ta có trong bảng excel, vì vậy tôi muốn vượt qua tên testcase như là một biến (Đó là trong excel) để trước phương pháp đó là trong lớp AbstractBaseTestCase, có cách nào để đạt được điều này? –

1

Dưới dụ giải thích cách bạn có thể lấy tên phương thức và tên lớp trong của bạn trước khi Phương pháp

@BeforeMethod 
     public void beforemethod(Method method){ 
//if you want to get the class name in before method 
     String classname = getClass().getSimpleName(); 
//IF you want to get the method name in the before method 
     String methodName = method.getName()  
     } 

@Test 
public void exampleTest(){ 


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