我有一个 NUnit 测试
[TestCase(...)]
public void test_name(Action onConfirm)
{
...
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是在 TestCase 属性中将一个 Action 传递到这个测试中,但无论我尝试什么都会失败。我试着把
() => SomeDummyMethodIDefined()
Run Code Online (Sandbox Code Playgroud)
直接进入测试用例,但没有用。
我创建了一个动作
Action DummyAction = () => SomeDummyMethodIDefined();
Run Code Online (Sandbox Code Playgroud)
并将 DummyAction 传递到 TestCase 中,但这不起作用。
有没有办法做到这一点?
这是一个非常粗略的例子,我的灵感来自阅读NUnit 文档 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 };
}
}
Run Code Online (Sandbox Code Playgroud)
尝试一下代码,希望你能从中得到你想要的。作为记录,我使用的是 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;
}
}
Run Code Online (Sandbox Code Playgroud)