xunit.net - 我可以将委托(delegate)传递给 Xunit 理论吗

标签 xunit.net

我有兴趣在多个类上重用测试理论,特别是一些需要相同测试的构造函数。我最初有使用委托(delegate)来执行此功能的想法。

但是,我认为我可能正在尝试重新发明轮子,尽管 C# 具有一些功能,但我认为我正在尝试一种不正确的方法。对于这种使用比 InlineData 更正确的方法,是否有支持的方法。

InlineData 似乎用于注入(inject)输入,因此我可能会测试给定测试的许多示例。但是我可以为几种方法提供几个变量并进行测试 ^x 而不是 *x

[Theory]
[InlineData(input => new ConcreteConstructor(input)) ]
public void Constructor_Should_Not_Throw_Expection (Action<string>)
{
  constructor("SomeString");            
}

N.B 我认为在这种情况下我应该使用 Func 作为返回的对象。无论如何,我怀疑这完全是错误的做法,所以这不是主要考虑因素。

最佳答案

public static IEnumerable<object[]> TestData()
{
  Action<string> a1 = input => new ConcreteConstructor(input);
  yield return new object[] { a1 };
  Action<string> a2 = input => new AnotherConstructor(input);
  yield return new object[] { a2 };
}

[Theory]
[MemberData(nameof(TestData))]
public void Constructor_Should_Not_Throw_Expection(Action<string> constructor)
{
  constructor("SomeString");
}

关于xunit.net - 我可以将委托(delegate)传递给 Xunit 理论吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64679421/

相关文章:

unit-testing - 如何使用VS2015 Preview运行xUnit单元测试?

c# - .net core 测试数据库集

c# - 在 xUnit.net 中的所有测试之前和之后运行一次代码

xunit.net - dotnet test > 有没有办法显示在控制台中运行的测试列表?

c# - Xunit Assert.Throws 中的异步 lambda 表达式

unit-testing - 如何在 xunit/autofixture 中组合 PropertyData 和 AutoNSubstituteData 属性?

c# - 从 Main 方法/在 MonoDevelop 中运行 XUnit.Net 测试

c# - 我如何在 XUnit 测试中的事实开始和结束时创建和删除数据库?

unit-testing - 如何在 VS 2017 中的测试资源管理器中仅显示方法名称(使用 xUnit for .NET Core)

visual-studio-2010 - 带有 xUnit、Assert.Throws 和 "Exception was unhandled by user code"的 Visual Studio