2013-12-19 46 views
1

我有一個NUnit測試我如何通過一個操作進入一個TestCase

[TestCase(...)] 
public void test_name(Action onConfirm) 
{ 
    ... 
} 

我想要做的就是傳遞一個動作到本次測試中TestCase的屬性,但無論我怎麼努力不斷失敗。我試圖把

() => SomeDummyMethodIDefined() 

直接進入TestCase,並沒有工作。

我創建了一個動作

Action DummyAction =() => SomeDummyMethodIDefined(); 

,並通過DummyAction到測試用例,並沒有奏效。

有沒有辦法做到這一點?

回答

4

這是我從讀NUnit docs here

namespace NUnitLambda 
{ 
    using System; 
    using NUnit.Framework; 

    [TestFixture] 
    public class Class1 
    { 
     [Test] 
     [TestCaseSource(typeof(SourceClass), "TestCases")] 
     public void Foo(Action action) 
     { 
      action(); 
     } 
    } 

    public class SourceClass 
    { 
     private static Action t =() => Console.WriteLine("Hello World"); 

     public static Action[] TestCases = { t }; 
    } 
} 

有一個玩的代碼,希望你會得到你想要出它是什麼啓發了非常粗略的例子。爲了記錄,我使用了NUnit 2.6。

編輯:

你不必在這裏無論是使用例如static

public class SourceClass 
{ 
    private Action t =() => Console.WriteLine("Hello World"); 

    public Action[] TestCases; 

    public SourceClass() 
    { 
     TestCases = new Action[1]; 

     TestCases[0] = t; 
    } 
}