2013-08-02 19 views
5

Tôi muốn chụp ảnh màn hình khi thử nghiệm không thành công, nhưng, sau khi, hãy chạy phương thức @After.Chạy TestWatcher trước @After

Có thể làm như vậy? Với TestWatcher, phương thức không thành công() chạy sau @After.

Ngoài ra, tôi không thể chuyển nội dung @Sau đến TestWatcher đã hoàn thành() vì tôi có super.afterTest() để gọi @After.

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

+0

tôi thấy bài blog này https://garygregory.wordpress.com/2011/09/25/understaning -Hướng dẫn-phương thức-trật tự-thực thi/cực kỳ hữu ích trong việc hiểu các lệnh thực thi phương thức JUnit. – sam

Trả lời

0

Tôi đã gặp sự cố tương tự và đã thay đổi mã của mình để chạy mã từ @After trong phương thức đã hoàn thành() của Quy tắc mới. Vì vậy, thứ tự thực hiện tại là:

  • @After
  • thất bại() (nếu thất bại)
  • thành()
0

Đó là không thể đối với TestWacher phương pháp finished() hoặc failed() chạy trước phương pháp @after cho rằng TestWatcher là lớp cơ sở cho Rules.

Do cách quy tắc được thiết lập, bạn không thể có quy tắc sau @before hoặc trước @after. Bạn có thể nghĩ về các quy tắc như các shell mà bạn đưa vào phương thức test. Vỏ đầu tiên tiếp tục là @before/@after. Sau đó, áp dụng @rules. (Tham khảo @Troy trong Apply '@Rule' after each '@Test' and before each '@After' in JUnit)

Trình tự thực hiện, cho một @test, là như sau

@TestWatcher starting 
@Before 
@Test 
@After 
@TestWatcher finished