Я тестирую демонстрационное приложение, которое является клиентом POP3. Клиент POP3 реализует IDisposable
, поэтому я пытаюсь проверить цикл using
.
(я использую nunit 2.5.2 и Moq 4.0)
/// <summary>
/// Unsuccessful construct dispose cycle, no ILogger object given.
/// Expecting ArgumentNullException. Expecting TcpClient dispose to be called.
/// </summary>
[Test]
[ExpectedException(typeof(ArgumentNullException))]
public void ConstructorDispose_LoggerNull_ArgumentNullException()
{
mockTcpClient.Setup(x => x.Dispose());
using (var popClient = new PopClient(null, mockTcpClient.Object))
{
}
mockTcpClient.VerifyAll();
}
Как видите, метод verifyAll
никогда не будет вызываться, и, тем не менее, тест будет успешным. Итак ...
- Как лучше всего это решить?
- Есть ли другой способ, тогда попробуйте поймать?
Обновление На данный момент я исправил это так:
mockTcpClient.Setup(x => x.Dispose());
var correctExceptionThrown = false;
try
{
using (var popClient = new PopClient(null, mockTcpClient.Object))
{
}
}
catch (ArgumentNullException)
{
correctExceptionThrown = true;
}
finally
{
mockTcpClient.VerifyAll();
}
Assert.That(correctExceptionThrown);
Но утилита не называется , похоже, это спецификация C #.