XUnit 2.4 运行 按顺序测试

XUnit 2.4 running tests in sequence

我们正在使用 XUNit 2.4 并设置了以下测试,这些测试都在同一个 class 中,因此 Xunit 应该 运行 按顺序进行。 Theory 和 InlineData 属性的存在是否导致这些测试并行 运行。 I.E 测试 运行ner 将 运行 parrellel 中 1 个测试的所有 InlineData 属性?

[Theory]
[Trait("Category", "Acceptance")]
[InlineData(1, 0.0000)]
[InlineData(1, 0.9900)]
[InlineData(1, 1.9900)]
[InlineData(3, 0.9900)]
[InlineData(4, 29.9900)]
[InlineData(5, 2)]
public async Task ShouldReturnNewPrice(int packagePriceQuantity, decimal retailPrice)
{
}


[Theory] 
[Trait("Category", "Acceptance")]
[InlineData(1, 0.0000)]
[InlineData(1, 0.9900)]
[InlineData(1, 1.9900)]
[InlineData(3, 0.9900)]
[InlineData(4, 29.9900)]
[InlineData(5, 2)]
public async Task ShouldReturnDiscount(int 

packagePriceQuantity,十进制零售价) {}

以上测试永远不会运行并行;任何时候每个测试 class 只有一个测试用例 运行s。 (在测试 Class 和组装级别有并行 运行ning 设施;the settings 允许您选择加入或退出 - 对于这个问题,重要的因素是只要你在同一个测试中使用两个测试方法 Class,它们不会也不能并行化)

单次理论考试个别案例,顺序不随机;他们按顺序运行。排序由反射 API 产生 InlineData 属性的顺序定义。这通常与源代码中的顺序一致,但如果它确实有效,那只是巧合(在 IL/metadata 级别的代码中,对应用于某些内容的属性没有严格的排序)。 (如果您 want/need 个案例 运行 随机排序,您需要 MemberData 以随机顺序提供数据)

如果您要求完整测试 class 为 运行,则单独的测试方法(ShouldReturnNewPriceShouldReturnDiscount )将 运行 随机排序。 (有一种方法可以覆盖此行为,但随机化是一个重要的故意默认设置)