如何将Action传递给TestCase

时间:2013-12-19 12:49:36

标签: nunit

我有一个NUnit测试

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

我想要做的是在TestCase属性中将Action传递给此测试,但无论我尝试什么都会失败。我试着把

() => SomeDummyMethodIDefined()

直接进入TestCase并且无效。

我创建了一个Action

Action DummyAction = () => SomeDummyMethodIDefined();

并将DummyAction传递给TestCase,但这不起作用。

有办法做到这一点吗?

1 个答案:

答案 0 :(得分: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;
    }
}