我有一个针对多个框架的库,其中之一是.Net 8,其中之一是.Net Standard 2.1。旧框架中不包含某些功能,因此我为其编写了自己的版本。在这种情况下,请考虑以下代码:
public static class RandomExtensions
{
#if NETSTANDARD2_1_OR_GREATER
public static long NextInt64(this Random random) => // my implementation.
#endif
}
我有一个针对 .Net 8 的测试项目 (xUnit),并进行以下测试:
// Ignore for now that this is a silly test...
public class RandomExtensionsTests
{
[Fact]
public void NextInt64()
{
var random = new Random();
var value = random.NextInt64();
Assert.InRange(value, 0, long.MaxValue - 1);
}
}
当我运行此代码时,它显然是针对 .Net 8 实现。我怎样才能让它针对我的实施?
我的想法是,我可以在我的测试项目中针对与我的库项目中相同的框架,但是您不能在测试项目中针对.Net 标准,因为它不是一个平台(参见此处)。所以我尝试瞄准 .Net core app 2.1,但是当我尝试引用我的库时,我收到警告
Project xxx is not compatible with netcoreapp2.1
。我对剩下要做的事情有点不知所措。
您可以尝试使用
dotnet
CLI,即 dotnet test
命令。
您可以使用
--framework
选项。
来自文档:
要运行测试的目标框架的目标框架名称 (TFM)。还必须在项目文件中指定目标框架。
所以你可以尝试一下
dotnet test --framework netstandard2.1