2012-02-03 51 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; 
} 

-

[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()); 
} 

[附件B在相應的測試MessageClassTest代碼] ...它是失敗的第二次檢驗。設置val高於截止點(9999)時,應該指定(9999)而不是12345.

正如我所說的,我是Visual Studio單元測試框架的新成員;在TestMethod中不可能有多個測試嗎?或者我需要做些什麼,如調用flush()或finish()或close()或reset()或其他?

回答

1

測試失敗,因爲測試應該失敗。你的方法是不正確:

_messageTypeSubcode = AMessageTypeSubcode; 

應該是:

_messageTypeSubcode = iMsgTypeSubCode ; 
+0

我是軟件開發的脫線先生 - 首先我必須連接到錯誤的屬性的代碼(MessageTypeCode而不是MessageTypeSubcode)和我DID在我錯位的代碼中修復了這個錯誤。 – 2012-02-03 20:18:10

相關問題