2016-06-24 20 views
5

Các khái niệm về unit testintegration test được xác định rõ: các thử nghiệm trước đây là một thành phần, sau đó kiểm tra nhiều hơn một thành phần.Thử nghiệm với cơ sở dữ liệu trong bộ nhớ. Kiểm tra đơn vị hoặc thử nghiệm tích hợp?

Tôi sử dụng Effort để kiểm tra các kho lưu trữ Entity Framework của mình. Nỗ lực là một cơ sở dữ liệu trong bộ nhớ thực hiện, vì vậy chúng tôi không nhấn vào một cơ sở dữ liệu thực tế mà chỉ là bộ nhớ để nó nhanh hơn.

Tôi đang thử nghiệm chỉ các kho lưu trữ của mình bằng cách tạo một số dữ liệu giả và điền vào cơ sở dữ liệu trong bộ nhớ với dữ liệu giả này. Tôi không chế nhạo bối cảnh dữ liệu. Những điều này có nên được coi là kiểm tra đơn vị hoặc thử nghiệm tích hợp không?

Chỉnh sửa: Tôi đang thử nghiệm các phương pháp lưu trữ của tôi - ví dụ: CustomerRepository.GetAllCustomers. Tôi đang điền vào cơ sở dữ liệu trong bộ nhớ này với (nói) 5 khách hàng, gọi phương thức và khẳng định rằng tôi có được 5 khách hàng đó.

Trả lời

0

Sử dụng cơ sở dữ liệu trong bộ nhớ không đủ thông tin để cho biết bạn đang viết kiểm tra đơn vị hoặc thử nghiệm tích hợp.

Nếu bạn chỉ thử nghiệm một thành phần nhỏ như một phương pháp của một lớp thì có đó là một bài kiểm tra đơn vị. Nhưng nếu phương thức đó gọi các phương thức công cộng khác để thực hiện công việc của nó và bạn không chế nhạo những phụ thuộc đó, thì đó sẽ là một thử nghiệm tích hợp.

+0

Cảm ơn bạn đã ghi chú đó. Tôi đã thêm nhiều chi tiết hơn về những gì tôi đang làm. Cảm ơn! – user11081980

+0

Bạn có thể thêm mã mẫu hoặc mã giả cho 'GetAllCustomers' để có ý tưởng về cách bạn xử lý các phụ thuộc không? Ví dụ. nhà máy của khách hàng, kết nối db, v.v. – fips

4

Từ mô tả thử nghiệm cho phương pháp CustomerRepository.GetAllCustomers, nó có vẻ là một thử nghiệm đơn vị vì bạn không sử dụng các dịch vụ khác (bên ngoài hoặc bên trong ứng dụng của bạn).

Nếu phương pháp của bạn chỉ đơn giản là sử dụng đối tượng db Connection để truy xuất các hàng từ db trong bộ nhớ thay vì db thực và không có dịch vụ công cộng nào khác được gọi hoặc bị chế nhạo (nếu được gọi) thì bạn đang thực hiện kiểm tra đơn vị (dường như là trường hợp của tôi mặc dù bạn không chia sẻ mã số CustomerRepository.GetAllCustomers).

Như đã được chỉ ra bởi một câu trả lời trước, chỉ cần sử dụng trong bộ nhớ db là không đủ để cho biết nếu các bài kiểm tra của bạn là đơn vị hoặc tích hợp esp. nếu bạn đang tự mình thử nghiệm DAO layer.

+0

Cảm ơn Sabir, bạn nói đúng. Tôi không sử dụng bất kỳ dịch vụ nào khác (tôi đang chế nhạo tất cả các phụ thuộc) và tôi đang sử dụng cơ sở dữ liệu trong bộ nhớ. Kể từ khi tôi hỏi câu hỏi này, tôi đã học được rằng một trong những yêu cầu của bài kiểm tra đơn vị là chúng được thực hiện trong bộ nhớ thay vì nhấn một cơ sở dữ liệu thực tế. Cảm ơn bạn! – user11081980

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