2013-04-29 34 views
11

Chúng ta có thể có phương pháp thiết lập thử nghiệm với các đối số không? Tôi cần thiết lập khác nhau cho mọi thử nghiệm trong vật cố định.Phương pháp thiết lập thử nghiệm Nunit với đối số

Liệu chúng ta có một cái gì đó (hoặc cách tương tự) như ý tưởng giả:

[SetUp] 
[Argument("value-1")] 
[Argument("value-2")] 
[Argument("value-3")] 
public void InitializeTest(string value) 
{ 
    //set env var with value 
} 
+0

http://www.nunit.org/index.php?p=parameterizedTests&r= 2.5.5 – Oded

+1

Không rõ tại sao bạn cố gắng tham số hóa * thiết lập * thay vì * kiểm tra *. –

+0

sau khi thiết lập này các bài kiểm tra làm cùng một công việc. nó có thể có ý nghĩa hơn để đưa bit này vào thử nghiệm và làm cho các thử nghiệm parametrized! – dushyantp

Trả lời

17

Thiết lập được thực hiện một lần cho mỗi bài kiểm tra và cho một bài kiểm tra chỉ có một thiết lập và Teardown. Bạn có thể gọi phương thức Initialize của bạn từ các bài kiểm tra một cách rõ ràng và sau đó tạo ra các bài kiểm tra theo hướng dữ sử dụng TestCase thuộc tính

public void InitializeTest(string value) 
{ 
    //set env var with value 
} 

[TestCase("Value-1")] 
[TestCase("Value-2")] 
[TestCase("Value-3")] 
public void Test(string value) 
{ 
    InitializeTest(value); 

    //Arange 
    //Act 
    //Assert 
} 

Kết quả, bạn sẽ có ba bài kiểm tra từng gọi InitializeTest với các thông số khác nhau

+0

cảm ơn, điều này có vẻ hợp lý hơn cách tôi đang cố gắng. – dushyantp

2

Phương pháp thiết lập được sử dụng để làm một số công việc pretest, trong đó sẽ bao gồm việc chuẩn bị cho kỳ thi này như thiết lập bất kỳ giá trị cần thiết cho việc chạy thử, bạn có thể đặt các phương thức này bên trong phương thức thiết lập thay vì cung cấp các giá trị làm tham số.

26

Nó có thể được thực hiện bằng cách sử dụng Thuộc tính TestFixture với tham số.

Nếu tất cả các bài kiểm tra trong lớp phụ thuộc vào cùng một tham số thì đây là cách để thực hiện.

Lớp học sẽ cần một hàm tạo với cùng tham số được chuyển đến thuộc tính TestFixture.

Lịch thi đấu

Xem tham số thử nghiệm trên https://github.com/nunit/docs/wiki/TestFixture-Attribute

[TestFixture("Oscar")] 
[TestFixture("Paul")] 
[TestFixture("Peter")] 
public class NameTest 
{ 
    private string _name; 

    public NameTest(string name) 
    { 
     _name = name; 
    } 

    [Test] 
    public void Test_something_that_depends_on_name() 
    { 
     //Todo... 
    } 

    [Test] 
    public void Test_something_that_also_depends_on_name() 
    { 
     //Todo... 
    } 
    //... 
} 

Mã này là từ trang web tài liệu nunit:

[TestFixture("hello", "hello", "goodbye")] 
[TestFixture("zip", "zip")] 
[TestFixture(42, 42, 99)] 
public class ParameterizedTestFixture 
{ 
    private readonly string eq1; 
    private readonly string eq2; 
    private readonly string neq; 

    public ParameterizedTestFixture(string eq1, string eq2, string neq) 
    { 
     this.eq1 = eq1; 
     this.eq2 = eq2; 
     this.neq = neq; 
    } 

    public ParameterizedTestFixture(string eq1, string eq2) 
     : this(eq1, eq2, null) 
    { 
    } 

    public ParameterizedTestFixture(int eq1, int eq2, int neq) 
    { 
     this.eq1 = eq1.ToString(); 
     this.eq2 = eq2.ToString(); 
     this.neq = neq.ToString(); 
    } 

    [Test] 
    public void TestEquality() 
    { 
     Assert.AreEqual(eq1, eq2); 
     if (eq1 != null && eq2 != null) 
      Assert.AreEqual(eq1.GetHashCode(), eq2.GetHashCode()); 
    } 

    [Test] 
    public void TestInequality() 
    { 
     Assert.AreNotEqual(eq1, neq); 
     if (eq1 != null && neq != null) 
      Assert.AreNotEqual(eq1.GetHashCode(), neq.GetHashCode()); 
    } 
} 
Các vấn đề liên quan