【发布时间】:2015-05-28 14:29:54
【问题描述】:
我有使用 InlineData 和 MemberData 属性在 XUnit 中编写的测试。我想通过项目中其他地方的代码运行测试,并让属性自动填充测试数据,就像通过 VS 测试运行器运行时一样。
如果不是属性,我会像任何其他普通方法一样直接调用方法。仍然检查断言并且它运行良好。但是,如果我直接调用具有属性的方法,属性将被忽略,我必须通过代码手动提供所有测试数据。 XUnit 中是否有某种测试运行器类可以重用来完成此任务?我一直在尝试挖掘他们的 API,但无济于事。
我为什么要这样做需要一些解释,但请耐心等待。我正在针对特定接口而不是它们的具体实现编写测试(例如考虑标准集合接口)。有很多东西要测试,我不想为每个具体的实施者(可能有几十个)复制粘贴它们。我编写了一次测试,然后将接口的每个具体实现作为测试的第一个参数传递给测试,这是一个要测试的主题。
但这留下了一个问题。 XUnit 看到测试并想要运行它,但它不能,因为在这一层没有可用的具体实现,只有接口。所以我想在更高层编写测试,只是新的具体实现,然后调用传递新主题的接口测试。对于只接受 1 个参数(主题)的测试,我可以轻松地执行此操作,但对于我也使用 InlineData 或 MemberData 的测试,我想重用那些已经提供的测试用例,只需将主题添加为第一个参数。
【问题讨论】:
-
出于好奇,为什么要自己调用测试方法?
-
我在问题中添加了解释,因为它需要的不仅仅是几个词。我希望我在这里寻找的东西是有意义的。