2013-06-04 4 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 Этот подход позволяет легко изменять внешние файлы/значения без необходимости перекомпилировать код. Также меньше тестов кода/меньше.

Вы также сказали, что в настоящее время это только чтение материала, но в будущем может писать материал. В качестве текущего состояния ваш тест охватывает то, что требуется (i, e чтение). На данном этапе требования к написанию не доступны, поэтому вам не нужно беспокоиться об этом.

Просто сторона примечания/не связаны: - Ваш MyCustomBinaryReader должен читать файл с диска. Поэтому это не модульный тест, и это тест типа интеграции с управлением данными.

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