2009-07-28 36 views

Trả lời

15

Bạn nên tạo một lớp mới cho bài kiểm tra đó chỉ có thiết lập (hoặc thiếu thiết lập) mà nó cần.

Ngoài ra, bạn có thể unfactor mã thiết lập thành một phương pháp mà tất cả các cuộc kiểm tra khác gọi, nhưng tôi không khuyên bạn nên phương pháp này.

+1

Nếu tôi muốn ở cùng một lớp thì tôi có thể làm như thế nào ?? –

0

Tôi không tin rằng bạn có thể làm điều đó, nó sẽ liên quan đến việc biết thử nghiệm nào sắp chạy mà tôi không nghĩ là có thể.

tôi muốn đề nghị bạn đặt nó trong một khác nhau [TestFixture]

2

Bạn có thể có những chính SetUp trong một lớp cơ sở:

[SetUp] 
public virtual void SetUp() 
{ 
    // Set up things here 
} 

... và sau đó ghi đè lên nó trong lớp mà bạn có các bài kiểm tra không được chạy mã số SetUp:

[SetUp] 
public override void SetUp() 
{ 
    // By not calling base.SetUp() here, the base SetUp will not run 
} 
19

Bạn cũng có thể thêm ca tegory và kiểm tra danh sách danh mục trong thiết lập của bạn:

public const string SKIP_SETUP = "SkipSetup"; 

[SetUp] 
public void Setup(){ 
    if (!CheckForSkipSetup()){ 
     // Do Setup stuff 
    } 
} 

private static bool CheckForSkipSetup() { 
    ArrayList categories = TestContext.CurrentContext.Test 
     .Properties["_CATEGORIES"] as ArrayList; 

    bool skipSetup = categories != null && categories.Contains(SKIP_SETUP); 
    return skipSetup ; 
} 

[Test] 
[Category(SKIP_SETUP)] 
public void SomeTest(){ 
    // your test code 
} 
+0

Không hoạt động đúng cách ... –

+3

@DebendraDash '_CATEGORIES' được gọi là 'Danh mục' trong các phiên bản NUnit mới hơn. Đây là loại điều có thể dễ dàng xảy ra khi dựa vào nội dung thư viện. –

0

Đây là mã mà tôi đề xuất để hoàn thành những gì bạn muốn.

public const string SKIP_SETUP = "SkipSetup"; 

Bây giờ thêm phương pháp sau đây:

private static bool CheckForSkipSetup() 
{    
    var categories = TestContext.CurrentContext.Test?.Properties["Category"]; 

    bool skipSetup = categories != null && categories.Contains("SkipSetup"); 
    return skipSetup; 
} 

Bây giờ kiểm tra điều kiện như sau:

[SetUp] 
public async Task Dosomething() 
{ 
    if (!CheckForSkipSetup()) 
    { 

    } 
} 

Sử dụng các trường hợp thử nghiệm như sau:

[Test] 
[Category(SKIP_SETUP)] 
public async Task Mywork() 
{ 

} 
1

Đây là mã mà tôi đề xuất để hoàn thành những gì bạn muốn:

public const string SKIP_SETUP = "SkipSetup"; 

private static bool CheckForSkipSetup() 
{ 
    string category = string.Empty; 
    var categoryKeys = TestContext.CurrentContext.Test.Properties.Keys.ToList(); 

    if (categoryKeys != null && categoryKeys.Any()) 
     category = TestContext.CurrentContext.Test.Properties.Get(categoryKeys[0].ToString()) as string; 

    bool skipSetup = (!string.IsNullOrEmpty(category) && category.Equals(SKIP_SETUP)) ? true : false; 

    return skipSetup; 
} 

[SetUp] 
public void Setup() 
{ 
    // Your setup code 
} 

[Test] 
public void WithoutSetupTest() 
{ 
    // Code without setup 
} 

[Test] 
[Category(SKIP_SETUP)] 
public void CodeWithSetupTest() 
{ 
    // Code that require setup 
} 
Các vấn đề liên quan