Tôi đang sử dụng MSTEST bên trong Visual Studio 2008. Làm thế nào tôi có thể có mỗi phương pháp thử nghiệm đơn vị trong một hành động lớp thử nghiệm nhất định như thể nó là thử nghiệm đầu tiên để chạy sao cho tất cả trạng thái toàn cục được đặt lại trước khi chạy từng thử nghiệm? Tôi không muốn một cách rõ ràng làm sạch thế giới sử dụng TestInitialize, ClassInitialize, AssemblyInitialize, vv Ví dụ:Làm thế nào để buộc một MSTEST TestMethod để thiết lập lại tất cả các đơn/statics trước khi chạy?
[TestClass]
public class MyClassTests
{
[TestMethod]
public void Test1()
{
// The "Instance" property creates a new instance of "SomeSingleton"
// if it hasn't been created before.
var i1 = SomeSingleton.Instance;
...
}
[TestMethod]
public void Test2()
{
// When I select "Test1" and "Test2" to run, I'd like Test2
// to have a new AppDomain feel so that the static variable inside
// of "SomeSingleton" is reset (it was previously set in Test1) on
// the call to ".Instance"
var i2 = SomeSingleton.Instance;
// some code
}
Mặc dù một similar question xuất hiện về chủ đề này, nó chỉ rõ rằng các xét nghiệm không chạy song song. Tôi nhận ra rằng các thử nghiệm chạy serially, nhưng dường như không có cách nào để buộc một AppDomain mới cho mỗi phương thức (hoặc một cái gì đó tương đương với xóa tất cả trạng thái). Lý tưởng nhất, tôi muốn chỉ định hành vi này cho một tập hợp con nhỏ của các bài kiểm tra đơn vị của tôi để tôi không phải trả tiền phạt của một tạo AppDomain mới cho các bài kiểm tra mà không quan tâm đến trạng thái toàn cầu (phần lớn các bài kiểm tra của tôi).
bạn có ví dụ về mã Jeff không? – DevDave
Có, một mẫu mã xin vui lòng – Harindaka