У меня есть 3 тестовых проекта со следующей иерархией зависимостей:
Tests.Common (.NET Standard library)
Tests.DotNetCore (.NET Core library)
Tests.Wpf (.NET Framework library)
Идея состоит в том, чтобы определить методы тестирования как вызов метода RunTests
в Tests.Common
:
// using xUnit
// using System.Linq.Expressions
// using static System.Linq.Expressions.Expression
namespace Tests.Common {
public class TestBase {
protected virtual void RunTest(Expression expr, string result) { ... }
}
public class Constructed {
[Fact]
public void ConstructBinary() =>
RunTest(
Add(Constant(5), Constant(42)),
"5 + 42"
);
}
}
, а затем в Tests.Wpf
я могу протестировать те же выражения с классами виртуальных машин только для пользовательского интерфейса, переопределив метод RunTests
:
// using ExpressionToString.Wpf
namespace Tests.Wpf {
public class Constructed : Tests.Common.Constructed {
public override void RunTest(Expression expr, string result) {
var vm = new ExpressionVM(expr);
// at this point, all I want to test is that the VM class is created successfully
}
}
}
Моя проблема в том, что Visual Studio Test Explorer обнаруживаетметоды тестирования в Tests.Common
, даже если тесты xUnit в стандартной библиотеке .NET не могут быть запущены; им требуется библиотека для конкретной платформы (поэтому у меня есть Tests.DotNetCore
тестовый проект и дополнительная цепочка наследования там.)
Как я могу предотвратить Visual Studio TestПроводник отображает тесты в стандартной библиотеке .NET?