2013-06-04 51 views
0

我正在研究讀取二進制文件並存儲該二進制文件中存在的值的類。如何單元測試二進制格式閱讀器類

的問題是如何進行單元測試這個班,我已經做了正確的 現在的問題是,我部署了樣本文件,寫了單元測試的只有 特定文件。

例如: - 我知道二進制文件中的第一個值是一個整數,它的值將是60.所以我爲它編寫單元測試。我爲整個文件寫了測試。這些單元測試足夠了嗎?或者我應該再寫一些。

樣本單元測試。我已經爲所有值寫了測試。

[TestMethod] 
public void First_Integer_Read_Value_Is_60 
{ 
    // Arrange 
    var expected = 60; 
    var reader = new MyCustomBinaryReader(filepath); 

    // Act 
    var actual = reader.FirstValue; 

    // 
    Assert.AreEqual(expected, actual) 
} 

reader.FirstValue 
{ 
    get { return BinaryReader.ReadInt32(); } 
} 

所以我得到了100%的代碼覆蓋率。但是測試是否足夠?我們如何對這些類進行單元測試。

+0

你只是*閱讀*文件,或者你的代碼也寫*它嗎? –

+0

現在只有閱讀的東西,但也可能是我添加了寫作的東西。這取決於需求,目前沒有編寫代碼的計劃。 –

回答

0

如果您完全擔心MyCustomBinaryReader的測試覆蓋率,因爲您獲得了100%的代碼覆蓋率,這意味着您的測試已充分覆蓋了「讀取」行爲的代碼。由於您正在獲取正確的值,因此您也正確讀取了該文件。

很難知道您的具體要求。但是,如果讀取該文件中的每個值都很重要,那麼假設您的所有測試都覆蓋了每個值,那麼您的數據覆蓋率爲100%。這與代碼覆蓋無關。

你可以改進什麼? 而不是創建很多測試,你可以看看使用DataDriven測試 http://msdn.microsoft.com/en-us/library/ms182527.aspx 這種方法可以讓你輕鬆地更改外部文件/值,而無需重新編譯代碼。更少的代碼/更少的測試。

你也說目前它只是讀東西,但可能會在將來寫東西。就目前的狀況而言,您的測試涵蓋了所需的內容(我正在閱讀)。寫作要求在這個階段不可用,所以你不需要關心它。

只是旁註/不相關: - 您的MyCustomBinaryReader必須從磁盤讀取文件。因此,這不是一個單元測試,這是一個數據驅動的集成類型測試。