2012-08-26 12 views
29

Tôi tò mò là tại sao thiết lập lịch thi đấu phải tĩnh? Nó có vẻ trực quan hơn với tôi để có các biến mẫu cho mỗi vật cố định chia sẻ tuổi thọ của vật cố định.Tại sao phải có phương thức ClassInitialize là tĩnh?

Có, chúng có thể được khởi tạo trong hàm tạo, nhưng sau đó tôi giả sử chúng nằm ngoài tầm kiểm soát của nhân tố thử nghiệm.

Yêu cầu hoặc triết lý thiết kế nào đã xác định rằng phương pháp thiết lập phải tĩnh?

Trả lời

38

Phương thức với thuộc tính ClassInitialize chạy một lần cho tất cả các thử nghiệm trong lớp. Một cá thể của lớp được tạo ra mỗi lần chạy thử nghiệm, vì vậy nó phải là tĩnh để chỉ chạy một lần.

Nếu bạn muốn khởi tạo cho mọi thử nghiệm, thì bạn có thể sử dụng thuộc tính TestInitialize, sẽ chạy bất cứ khi nào một phiên bản mới của lớp được tạo (trước khi chạy thử nghiệm).

Nếu bạn cần thêm thông tin, bạn có thể kiểm tra:

That Pesky MSTest Execution Ordering

+11

Cảm ơn, tôi không biết một thể hiện được tạo ra cho mỗi bài kiểm tra. – ProfK

+5

Tôi không nghĩ rằng phương pháp phải tĩnh để chạy một lần. Khung kiểm thử đang khởi tạo và thực thi các lớp thử nghiệm mà chúng ta đã đúng. Nó có thể dễ dàng gọi một phương thức không tĩnh trước và sau khi nó chạy tất cả các phương thức thử nghiệm. – d512

+0

Nếu nó không tĩnh, khởi tạo không thể được chia sẻ với tất cả các trường hợp thử nghiệm. I E. nếu bạn cần khởi tạo một dịch vụ giả được sử dụng bởi tất cả các thử nghiệm. – user3285954