当依赖项依赖于 NUnit >= 2.x 时使用 NUnit 3?

Use NUnit 3 when a dependency depends on NUnit >= 2.x?

NuGet 充满了依赖 NUnit>= 2.x 构建的东西。我可以将它们与 NUnit 3 一起使用吗?

一个具体的例子。

并创建一些单元测试。这一直有效,直到您实际调用 TestBase 中调用 NUnit 的东西,例如

1.ShouldBeGreaterThan(0);

此时版本不匹配打破了它。

"Assembly Binding Redirect!"我听到你哭了。但是 NUnit 3 使用与 Nunit 2 不同的 public 密钥进行签名,因此这是不可能的。

如果 public 密钥发生变化,实际上是否有可能构建依赖于 NUnit>= 2.x 且适用于 NUnit 3 的东西?

NUnit 3 基本上是一个全新的产品。回想起来,我们可能应该创建一个新的 NuGet 包。现在太晚了。

由于 3.0 框架的工作方式与 v2 完全不同,因此程序集重定向对您没有帮助。

想要使用 NUnit 3.0 的第三方产品通常需要重写,除非它们只使用一个非常小的未更改的子集。

如果您想使用 NUnit 3,您只能使用已更新的 3RE 派对解决方案。

除了 Charlie 的回答之外,我还建议人们尝试联系损坏包的作者并鼓励他们更新他们的包以使用 NUnit 3,或者将他们的依赖项更改为 NUnit>=2.x 和 <2.9。

NUnit 团队多年来一直公开宣布 NUnit 3 将是一个突破性的变化。大多数依赖于 NUnit 的包往往是测试运行器或测试扩展,所以我希望他们会尽量了解情况。