2011-02-04 27 views
5

Tôi có một nhóm các trường hợp thử nghiệm MSTest sử dụng các phương pháp với các thuộc tính đó để xóa tất cả các hàng khỏi các bảng trong db thử nghiệm được tạo sau khi các thử nghiệm được bắt đầu; mỗi lần trong một thời gian tôi kết thúc với một hàng từ một trong những bài kiểm tra đơn vị vẫn còn trong DB.Trong trường hợp nào là [ClassCleanup] và [TestCleanup] không chạy

Vì tôi đang tiết kiệm thời gian bắt đầu thử nghiệm và xóa tất cả các bản ghi với dấu thời gian gần đây hơn, cách duy nhất tôi có thể xem cho các bản ghi còn tồn tại là nếu mã dọn dẹp không được gọi.

+0

Bạn đang đề cập đến NUnit, MSTest hoặc một khuôn khổ thử nghiệm khác? – adamjford

Trả lời

4

Vâng, trước hết, "kiểm tra đơn vị" về mặt kỹ thuật không nên chạm vào DB. Nhưng, tôi sử dụng NUnit cho các bài kiểm tra tích hợp của tôi, vì vậy không có biggie.

Các trường hợp duy nhất trong đó các phương pháp làm sạch sẽ không chạy toàn bộ là nếu có lỗi trong chức năng dọn dẹp hoặc ngoại lệ khiến thời gian chạy bị tắt. Những người duy nhất mà tôi biết có thể làm điều đó là các lỗi tràn bộ nhớ và lỗi ngoài bộ nhớ. Việc hủy bỏ một thử nghiệm từ trình gỡ lỗi cũng sẽ làm cho giai đoạn dọn dẹp bị bỏ qua.

Một giải thích có khả năng hơn, tùy thuộc vào lớp truy cập dữ liệu của bạn, là bạn đã mất kết nối DB của bạn và chức năng dọn dẹp không thể nhận được kết nối mới. Điều đó nói chung sẽ cho thấy cần phải làm cho DAL của bạn mạnh mẽ hơn, và cũng chỉ ra rằng một cái gì đó bạn không mong đợi đang xảy ra trong thử nghiệm để làm cho DAL phá vỡ.

+0

ít nhất một số trong số này là những gì tôi muốn xem xét để được tích hợp hơn kiểm tra đơn vị nghiêm ngặt; chỉ có kế thừa dự án tôi vẫn đang cố gắng để có được một cảm giác cho những gì các nhà phát triển trước đã làm. Tôi đã luôn luôn cảm thấy những quan điểm thuần túy về những gì nên/không được thực hiện trong các bài kiểm tra khá ngớ ngẩn; đặc biệt vì không có một bộ công cụ song song tương đương để chạy các thử nghiệm tự động khác. DB đang chạy trên máy chủ cục bộ, vì vậy việc mất kết nối có vẻ hơi khó xảy ra với tôi. –

+0

Làm thế nào "ngớ ngẩn" các quy tắc cho các cấp độ khác nhau của thử nghiệm phụ thuộc vào văn hóa làm việc của bạn. Một sự khác biệt chính, hầu hết thời gian, là các bài kiểm tra đơn vị chạy rất nhanh, vì vậy chúng có thể chạy trên mọi checkin khi sử dụng máy chủ CI. Tôi đã thấy các bộ thử nghiệm tích hợp mất hàng giờ và trong mọi trường hợp, bạn thường chạy các bộ kiểm tra đó ít thường xuyên hơn. – KeithS

1

Nếu bạn đang gỡ lỗi các kiểm tra và bạn dừng trình gỡ lỗi trước khi chạy thử nghiệm hoàn tất, điều này sẽ không được gọi.

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