2012-07-30 34 views
18

Tôi đã nhìn thấy một số câu hỏi liên quan đến điều này nhưng tôi dường như không hiểu được bất kỳ câu trả lời nào cho vấn đề cụ thể của tôi.Làm thế nào để kiểm tra các phương pháp vô hiệu bằng cách sử dụng EasyMock

Tôi có một đối tượng giả, cho phép gọi "object1", mà tôi gửi cho một số phương pháp để thử nghiệm, cho phép gọi testMethod(). Vì vậy, tôi kết thúc bằng cách gọi số điện thoại

testMethod(object1); 

để thử nghiệm. Bây giờ một nơi nào đó trong testMethod này, sẽ có một phần mà nó gọi một phương thức

object1.toggleDisplay(); 

là phương pháp trống. Nếu phương pháp này là như

object1.getDisplay() 

nơi nó thực sự trả về một cái gì đó, tôi thường làm

EasyMock.expect(object1.getDisplay()).andReturn(whatever); 

Tuy nhiên, đây là một phương pháp có hiệu lực, và tôi muốn chỉ kiểm tra điều này đã được thực sự được gọi là trong một khoảng thời gian nhất định. cách dễ nhất để làm điều này là gì?

Cảm ơn

Trả lời

22

Nếu mọi thứ đã không thay đổi trong vài năm trở lại đây, bạn sử dụng expectLastCall khi thiết lập mong đợi của bạn.

object1.toggleDisplay(); 
object.expectLastCall(); 
+1

Chờ vì vậy tôi có phải đặt object.expectLastCall() bên trong phương pháp thực tế của tôi? Tôi có các lớp bài kiểm tra Đơn vị của tôi và các lớp chương trình thực tế của tôi được tách ra và không muốn có mã kiểm tra đơn vị bên trong chương trình thực tế của tôi. – KWJ2104

+0

Không, bạn đặt cuộc gọi phương thức và 'expectLastCall(). Lần (NUM_TIMES)' bên trong bài kiểm tra đơn vị của bạn, nơi bạn đã sử dụng trước đó 'EasyMock.expect (object1.getDisplay()) .Return (any)' – DoctorRuss

+0

bất kỳ cách nào tôi có thể làm điều này để nhắm mục tiêu các phương pháp cụ thể? Ví dụ như tôi có phương thức toggleOn() và toggleOff() – KWJ2104

10
object1.toggleDisplay(); 
EasyMock.expectLastCall().times(5); 

hoặc nếu bạn nhập tĩnh các EasyMock phương pháp:

import static org.easymock.EasyMock.*; 

[...] 

object1.toggleDisplay(); 
expectLastCall().times(5); 
Các vấn đề liên quan