2012-02-03 2 views
1

Я новичок в модуле тестирования модулей 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? Или мне нужно сделать что-то вроде call flush() или finish() или close() или reset() или что-то еще?

ответ

1

Испытания не срабатывают, потому что тест должен сбой. Ваш метод неверен:

_messageTypeSubcode = AMessageTypeSubcode; 

Должен быть:

_messageTypeSubcode = iMsgTypeSubCode ; 
+0

Я г-н Маг разработок программного обеспечения - первый у меня был код прилагается к неправильному собственности (MessageTypeCode вместо MessageTypeSubcode) и я DID исправить эту ошибку в моем неуместном коде. –

Смежные вопросы