2011-04-07 13 views
7

Tôi đang bắt đầu thử nghiệm các ứng dụng nói chung và tôi muốn tạo một số bài kiểm tra để học Mockito trong mùa xuân. Tôi đã đọc một số thông tin nhưng tôi có một số nghi ngờ chung tôi muốn hỏi.Tạo các bài kiểm tra đơn nhất trong Spring 3

  1. tôi đã thấy đến kiểm tra Mockito và họ chú thích sự thử thách của lớp với: @RunWith (MockitoJUnitRunner.class) trong khi trong tài liệu xuân nó được sử dụng @RunWith (SpringJUnit4ClassRunner.class). Tôi không biết sự khác biệt giữa chúng là gì và tôi nên sử dụng cái nào cho một ứng dụng Spring trong đó các bài kiểm tra sử dụng Mockito.
  2. Vì tôi chưa thấy bất kỳ ứng dụng thực nào có kiểm tra tôi muốn biết thử nghiệm điển hình mà nhà phát triển sẽ làm. Ví dụ trong một ứng dụng CRUD điển hình cho người dùng (người dùng có thể được tạo, cập nhật ...) bất cứ ai có thể kiểm tra thông thường rằng nó sẽ được thực hiện.

Cảm ơn.

Trả lời

14
@RunWith(MockitoJUnitRunner.class) 

Với tuyên bố này, bạn giả sử viết đơn vị kiểm tra. Các bài kiểm tra đơn vị đang thực hiện một lớp đơn lẻ chế nhạo tất cả các phụ thuộc. Thông thường bạn sẽ bơm phụ thuộc chế nhạo tuyên bố như thế này trong trường hợp thử nghiệm của bạn:

@Mock 
private YourDependency yourDependencyMock; 

@RunWith(SpringJUnit4ClassRunner.class) 

Á hậu mùa xuân là có nghĩa là để thử nghiệm hội nhập Trong loại bài kiểm tra bạn (thành phần kiểm tra?) thực hiện một loạt các lớp học, nói cách khác bạn đang thử nghiệm một lớp đơn với phụ thuộc thực tế (kiểm tra một bộ điều khiển với các dịch vụ thực, DAO, cơ sở dữ liệu trong bộ nhớ, vv)

Y có lẽ nên có cả hai loại trong ứng dụng của bạn. Mặc dù đó là lời khuyên để có nhiều bài kiểm tra đơn vị hơn và chỉ có vài bài kiểm tra tích hợp khói, nhưng tôi thường thấy mình tự tin hơn khi viết hầu hết các bài kiểm tra tích hợp.

Đối với câu hỏi thứ hai của bạn, bạn nên có:

  • đơn vị kiểm tra cho mỗi lớp học (điều khiển, dịch vụ, DAO) riêng biệt với chế giễu mọi tầng lớp khác

  • thử nghiệm hội nhập cho toàn bộ hoạt động CRUD. Ví dụ: tạo một người dùng tập các bộ điều khiển, dịch vụ, DAO và cơ sở dữ liệu trong bộ nhớ.

+0

đó là giải thích thực sự tốt, nhưng đôi khi, tôi chỉ muốn trộn các bài kiểm tra đơn vị và kiểm tra tích hợp trong cùng một lớp kiểm tra ... làm cách nào để nhận chức năng tiêm mockito và tiêm xuân? tôi có thể sử dụng để @RunWith chú thích không? –

+0

Hoàn toàn có thể kết hợp Spring và Mockito. Về cơ bản, bạn cho phép Spring tạo và tiêm mocks của bạn. Xem câu hỏi này: http://stackoverflow.com/questions/2457239 –

+0

Có, nhưng với cách tiếp cận đó bạn sẽ không sử dụng @RunWith (MockitoJUnitRunner.class) –