Мои модульные тесты делают что-то очень странное, когда я вызываю метод базового базового типа. Я пробовал и NUnit и MSTest с тем же результатом. Вот как организован код:
public class MyStub {}
public class EnumerableGenerator
{
public bool GotMyStubs;
public IEnumerable<MyStub> GetMyStubs()
{
GotMyStubs = true;
yield return new MyStub();
}
}
public class ConsoleRunner
{
public void Main(string args[])
{
EnumerableGenerator gen = new EnumerableGenerator();
gen.GotMyStubs = false;
var myStubs = gen.GetMyStubs();
if (!gen.GotMyStubs)
return 1;
}
}
Тест не пройден, очевидно. Странная часть в том, что код работает нормально, когда я тестирую интеграцию. Это только перерывы в модульном тесте. Я не могу войти в GetMyStubs вообще. Точки разрыва в методе также не ломаются. Я включил взлом для всех исключений, генерируемых CLR, и это также ничего не дает.
Я проверил тип, возвращаемый GetMyStubs, и полное имя типа выглядит следующим образом:
[MyNamespace.EnumerableGenerator2 + <GetMyStubs>
d__8 [[MyNamespace.MyStub, MyNamespace, версия = 7.1.0.0, культура = нейтральная, PublicKeyToken = ноль]]
Теперь, когда я смотрю на свои номера покрытия кода (через MSTest), я замечаю, что есть запись EnumerableGenerator.d__8.
Кто-нибудь видел что-то подобное? Я полностью потерян ....