【发布时间】:2020-11-04 11:44:11
【问题描述】:
我有兴趣在多个类上重用测试理论,特别是一些需要相同测试的构造函数。我最初的想法是使用委托来执行此功能。
但是,我认为我可能正在尝试重新发明轮子,尽管 C# 具有一些功能,但我认为我正在尝试一种不正确的方法。对于这种事情,是否有支持的方法使用比 InlineData 更正确的方法。
InlineData 似乎用于注入输入,因此我可能会测试给定测试的许多示例。但是我可以为几种方法提供几个变量并测试 ^x 而不是 *x
[Theory]
[InlineData(input => new ConcreteConstructor(input)) ]
public void Constructor_Should_Not_Throw_Expection (Action<string>)
{
constructor("SomeString");
}
N.B 我认为在这种情况下我应该使用Func 作为返回对象。无论如何,我怀疑这是完全错误的方法,所以这不是主要考虑因素。
【问题讨论】:
-
您可以使用
MemberData机制将Func作为测试参数传递(您不能使用属性制作Func,因此它永远不会与InlineData一起使用 -
谢谢@RubenBartelink 我会试试 MemberData
-
我觉得这里不能用Func,因为不同的构造函数会返回不同的类型。因此,只有当所有类型都具有相同的基类时才有可能。然后至少你可以转换到那个基类并检查一些基本的东西。
-
同意@yevheniy-tymchishin。无论如何,我们都不需要返回任何东西,就像寻找异常而不是结果一样。
标签: xunit.net