У меня есть образец кода (вставлен ниже). Я использую Xunit, NSubstitute и NCrunch. Когда я запускаю тест в обозревателе тестов Visual Studio, он проходит. Когда я отлаживаю, тест проходит правильно. С NCrunch я сталкиваюсь с причудливым поведением, тест проходит, а затем терпит неудачу, затем он проходит, а затем терпит неудачу, и так продолжается.
[Fact]
public void Test()
{
var drink = Substitute.For<IDrink>();
var greetings = new Greetings();
var derived = new Derived();
derived.Test(drink, greetings);
}
public class Greetings
{
public string Message { get; set; }
}
public interface IDrink
{
void Prepare(Greetings greetings);
}
public abstract class Base
{
public abstract void Test(IDrink drink, Greetings greetings);
}
public class Derived : Base
{
public override void Test(IDrink drink, Greetings greetings)
{
drink.Prepare(greetings); /////////// The error is here
}
}
public class NullDerived : Derived
{
public override void Test(IDrink drink, Greetings greetings)
{
throw new Exception("No value found");
}
}
Ошибка NCrunch: 1005 *
Я попытался удалить параметр из метода Prepare (Greetings greetings), затем NCrunch каждый раз проходит тест.
Как подсказывает ошибка, я не передаю параметры из теста правильно.
Мой вопрос: как правильно передать объект приветствия методу Prepare. Я пробовал Arg.Any, но это не сработало.
Любая помощь приветствуется.
Редактировать 1: Я наблюдаю такое же поведение при использовании покрытия модульными тестами Reshaper .