У меня есть новый проект, создавал по гайду1: решение и в нём два проекта: MathUtilities и MathUtilities.Tests; всё через консоль, установлен .NET Core 3.0 (Ubuntu 19.10).
Я пробовал уже ставить вместо netstandard2.1 версию 2.0, но всё равно появляется ошибка Не удалось найти ~/math-utilities/MathUtilities.Tests/bin/Debug/netstandard2.1/testhost.dll. Опубликуйте тестовый проект и повторите попытку. Пробовал добавлять NUnit3TestAdapter версии 3.15.1, но тоже ничего не происходит. Почему так происходит? Неужели NUnit не совместим совсем с netstandard2.{0,1}?
Я вижу, что в получившихся исходниках по гайду указана платформа netcoreapp3.0 для тестового проекта, разве netstandard2.1 не совместим?
Листинг MathUtilities.csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
</PropertyGroup>
</Project>
Листинг MathUtilities.csproj:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="nunit" Version="3.12.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\MathUtilities\MathUtilities.csproj" />
</ItemGroup>
</Project>
Листинг кода:
namespace MathUtilities
{
public class Class1
{
public bool t() =>
true;
}
}
Листинг теста:
using NUnit.Framework;
namespace MathUtilities.Tests
{
[TestFixture]
public class Tests
{
private Class1 class1;
[SetUp]
public void Setup()
{
class1 = new Class1();
}
[Test]
public void Test1()
{
Assert.IsTrue(class1.t());
}
}
}
Ответ очень прост: тесты NUnit совсем не поддерживают тип проекта netstandard2.1, вместо этого netcoreapp3.1. К сожалению, я пропустил это, когда читал гайд .NET Core and .NET Standard, где написано, что проект тестов не может быть netstandard по некоторым причинам, но можно использовать совместимый netcoreapp3.1.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники