Недавно я попытался запустить тестовый случай Theory с ClassData в качестве входного теста.Это абсолютно нормальное поведение, и раньше оно работало.Предоставленный код работает, и я легко могу запустить все тесты в Visual Studio 2017 (15.9.2) с xunit 2.1 до 2.4.1 и Resharper 2018.2.3 .
Проблема: Когда я пытаюсь отладить тест Теории, отладчик запускается, но останавливается перед остановкой моей точки останова в тестовом случае Теории.Resharper показывает ошибку «Невозможно найти подходящие тесты».Насколько я мог воспроизвести эту ошибку, это происходит только тогда, когда я отлаживаю контрольный пример Теории, который использует класс (не примитивный тип) как T в TheoryData.
TestMethod_StringClassData: использует StringClassData с TheoryData типа string.TestMethod_CultureInfoClassData: не входит в тестовый пример при попытке его отладки.Единственное отличие состоит в том, что тестовый параметр - это не строка, а объект CultureInfo.
Контрольные примеры для воспроизведения ошибки:
public class UnitTest1
{
[Theory]
[ClassData(typeof(StringClassData))]
public void TestMethod_StringClassData(string cultureInfo)
{
}
[Theory]
[ClassData(typeof(CultureInfoClassData))]
public void TestMethod_CultureInfoClassData(CultureInfo cultureInfo)
{
}
public class StringClassData : TheoryData<string>
{
public StringClassData()
{
this.Add("de");
}
}
public class CultureInfoClassData : TheoryData<CultureInfo>
{
public CultureInfoClassData()
{
this.Add(new CultureInfo("de"));
}
}
}
Обновление 1 : если я создаю новый csproj VS2017 с Microsoft.NET.Test.Sdk и выбираю TargetFramework netcoreapp2.1, все снова работает нормально!Если я выберу TargetFramework net47, отладка Теории xunit невозможна.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
<PackageReference Include="xunit" Version="2.4.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
</ItemGroup>
</Project>