Я новичок в модуле модульного тестирования Visual Studio.Однако я немного поболтал в XUnit (точнее, DUnit).
Я не знаю, почему следующие тесты дают сбой.Исходя из моего кода C # (экспонат A), я думаю, что мои тесты (экспонат B) будут проходить с пресловутыми летающими цветами.
[ПРИЛОЖЕНИЕ A - Соответствующий код]
public class MessageClass
{
private int _messageTypeCode = 0;
private int _messageTypeSubcode;
private int _messageSequenceNumber;
private string _messageText;
public MessageClass()
{
this._messageTypeCode = 0;
this._messageTypeSubcode = 0;
this._messageSequenceNumber = 0;
this._messageText = string.Empty;
}
public void SetMessageTypeSubcode(int AMessageTypeSubcode)
{
int iMsgTypeSubCode = AMessageTypeSubcode;
if (iMsgTypeSubCode > 9999)
{
iMsgTypeSubCode = 9999;
}
else if (iMsgTypeSubCode < 0)
{
iMsgTypeSubCode = 42;
}
_messageTypeSubcode = AMessageTypeSubcode;
}
public int MessageTypeSubcode()
{
return _messageTypeSubcode;
}
[ПРИЛОЖЕНИЕ B - Тестовый код в соответствующем MessageClassTest]
[TestMethod()]
public void SetMessageTypeSubcodeTest()
{
int AMessageTypeSubcode;
// Should I put this class instantiation in MyTestInitialize?
MessageClass target = new MessageClass();
// Test 1
AMessageTypeSubcode = 0;
target.SetMessageTypeSubcode(AMessageTypeSubcode);
Assert.AreEqual(AMessageTypeSubcode, target.MessageTypeSubcode());
// Test 2 - 10000 is too much
AMessageTypeSubcode = 12345;
target.SetMessageTypeSubcode(AMessageTypeSubcode);
Assert.AreEqual(9999, target.MessageTypeSubcode());
// Test 3 - val must be positive
AMessageTypeSubcode = -77;
target.SetMessageTypeSubcode(AMessageTypeSubcode);
Assert.AreEqual(42, target.MessageTypeSubcode());
}
... Ошибка при втором тесте.Установив значение val выше порога (9999), следует назначить его (9999), а не 12345.
Как я уже говорил, я новичок в Visual Studio Unit Testing Framework;Разве нельзя иметь более одного теста в TestMethod?Или мне нужно сделать что-то вроде вызова flush () или finish () или close () или reset () или что-то еще?