У меня написан следующий тест:
[TestCase(null, 0, 0, null, null, ExpectedException = typeof(ArgumentNullException), TestName = "VerifyThat_WhenBeginWriteHasANullBuffer_AnArgumentNullExceptionIsThrown")]
[TestCase(new byte[] {1,2,3}, -1, 0, null, null, ExpectedException = typeof(ArgumentOutOfRangeException), TestName = "VerifyThat_WhenBeginWriteHasANegativeSizeParameter_AnArgumentOutOfRangeExceptionIsThrown")]
[TestCase(new byte[] { 1, 2, 3 }, 4, 0, null, null, ExpectedException = typeof(ArgumentOutOfRangeException), TestName = "VerifyThat_WhenBeginWriteHasASizeParameterThatIsBiggerThanTheBufferSizeAndTheOffsetIsZero_AnArgumentOutOfRangeExceptionIsThrown")]
[TestCase(new byte[] { 1, 2, 3 }, 5, 1, null, null, ExpectedException = typeof(ArgumentOutOfRangeException), TestName = "VerifyThat_WhenBeginWriteHasASizeParameterThatIsBiggerThanTheBufferSizeMinusTheOffset_AnArgumentOutOfRangeExceptionIsThrown")]
[TestCase(new byte[] { 1, 2, 3 }, 2, -1, null, null, ExpectedException = typeof(ArgumentOutOfRangeException), TestName = "VerifyThat_WhenBeginWriteHasANegativeOffsetParameter_AnArgumentOutOfRangeExceptionIsThrown")]
[TestCase(new byte[] { 1, 2, 3 }, 2, 5, null, null, ExpectedException = typeof(ArgumentOutOfRangeException), TestName = "VerifyThat_WhenBeginWriteHasAnOffsetParameterThatIsBiggerThanTheBufferSize_AnArgumentOutOfRangeExceptionIsThrown")]
public void VerifyThat_WhenBeginWritesGivenWrongParameters_AnExceptionIsThrown(byte[] buffer, int offset, int size, AsyncCallback callback, object state)
{
connectedStream.BeginWrite(buffer, offset, size, callback, state);
}
В настоящее время я вызываю функцию BeginWrite с недопустимым параметром и случайными допустимыми параметрами.
Я правильно здесь поступаю? Есть ли лучший способ предоставить действительные параметры?
EDIT:
В этом случае достоверность тестируемого параметра зависит от действительных параметров.
Например, смещение недопустимо всякий раз, когда оно отрицательно или когда оно больше размера буфера минус смещение. Тот факт, что тест проходит в одном случае, когда смещение больше размера буфера за вычетом смещения или отрицательного значения, не доказывает, что метод всегда будет вызывать ArgumentOutOfRangeException. Я всегда могу что-то пропустить.
Всегда лучше проверить несколько входов, чем один раз.
Есть ли способ сделать это автоматически?
РЕДАКТИРОВАТЬ 2:
Может ли AutoFixture быть моим решением?
РЕДАКТИРОВАТЬ 3:
Автокрепление не имеет порта Silverlight.