У меня есть частичное покрытие кода, и я не знаю почему. для людей, которым нравится этот вопрос, прежде чем они начинают читатьПокрытие частичного кода C# - Nunit
Хотите начать говорить «First Post», а также я до сих пор очень Юниор в моей карьере развития, но я был relativly быстро обучаемый (IMO), так вот оно. Использование Nunit для тестирования и MVP.
Код для тестирования -
void _view_Delete(object sender, EventArgs<Guid> e)
{
_agRepo.Delete(_agRepo.GetByID(e.Value));
var g = _agRepo.GetAll();
if (g.Count() > 0)
{
_view.FillRelatableAccessGroups(g.Where(x => x.IsRelatable));//partial coverage
_view.FillStandAloneAccessGroups(g.Where(x => !x.IsRelatable));//partial coverage
}
else
{
_view.ShowErrorMsg(true, "No Access Groups Found.");
}
}
Код, который тестирует «если» и «остальное» заявление (при условии, репо и вида высмеивает) -
[Test]
public void TestDelete()
{
_view.Raise(v => v.Delete += null, this, new EventArgs<Guid>(1.ToGuid()));
_agRepo.AssertWasCalled(r => r.Delete(_agRepo.GetByID(1.ToGuid())));
_view.AssertWasCalled(v => v.FillRelatableAccessGroups(Arg<IEnumerable<AccessGroup>>.Is.Anything));
_view.AssertWasCalled(v => v.FillStandAloneAccessGroups(Arg<IEnumerable<AccessGroup>>.Is.Anything));
}
[Test]
public void TestDeleteNoGroups()
{
_agList.Clear();
_view.Raise(v => v.Delete += null, this, new EventArgs<Guid>(1.ToGuid()));
_agRepo.AssertWasCalled(r => r.Delete(_agRepo.GetByID(1.ToGuid())));
_view.AssertWasNotCalled(v => v.FillRelatableAccessGroups(Arg<IEnumerable<AccessGroup>>.Is.Anything));
_view.AssertWasNotCalled(v => v.FillStandAloneAccessGroups(Arg<IEnumerable<AccessGroup>>.Is.Anything));
_view.AssertWasCalled(x => x.ShowErrorMsg(true, "No Access Groups Found."));
}
Так что мой вопрос в том, что мне не хватает в моем коде. Что-то еще происходит, что мне нужно протестировать, и я действительно хотел бы его найти. Я был в порядке, пытаясь в полной мере разобраться в тестах и тестах. Разработка Test Driven - моя цель. Если у кого-то есть какой-либо вход (хороший или плохой), он будет очень признателен. Я бы даже не возражал, если бы кто-то мог наброситься на меня достаточно, поэтому я могу начать натягивать эту метофорическую строку, которая имеет ответ, который я ищу, привязан к концу. Надеюсь, я предоставил достаточно информации для всех вас. Благодаря!
Какая часть кода nunit говорит, что ваши тесты не покрываются? – Mike
Его команда, которая заявляет, что она не покрыта. Тесты Nunit проходят. У меня есть комментарии в коде выше, указывающем код. – Eric
Вы утверждаете, что вызывается 'r.Delete()'. Этот код не тестируется. Кроме того, я не вижу, где вы назначаете данные для возврата из '_agRepo.GetAll()'. Если вы настроили его для возврата нулевых элементов, тогда 'x.IsRelatable' не будет оцениваться. У вас есть nUnit, чтобы игнорировать покрытие простых свойств get/set? –