Модульное тестирование предназначено для выявления ошибок в изолированном коде.Однако в типичном коде оболочки преобладают взаимодействия с другими исполняемыми файлами или операционной системой.Тип проблем, связанных с взаимодействиями в шелл-коде, имеет следующий характер: я называю правильные исполняемые файлы в правильном порядке с аргументами в правильном порядке с правильно отформатированными значениями аргументов, и это выходные данные в той форме, в которой я их ожидаюбыть и т. д. Чтобы протестировать все это, вы не должны применять модульное тестирование, а вместо этого использовать интеграционное тестирование.
Однако, существует шелл-код, который подходит для модульного тестирования.Это, например, код, выполняющий вычисления внутри оболочки, или манипуляции со строками.Я бы даже рассмотрел шелл-код с вызовами некоторых фундаментальных инструментов, таких как basename
, как подходящий для модульного тестирования (интерпретируя такие инструменты как часть «стандартной библиотеки», если хотите).
Как сделать этичасти кода в оболочке, которые подходят для модульного тестирования, на самом деле тестируются с модульным тестированием?Один из самых полезных подходов в моем опыте - отделить взаимодействия от вычислений.То есть попробуйте поместить вычислительные части в отдельные функции оболочки, которые нужно протестировать, или выделите части с доминированием взаимодействия в отдельных функциях оболочки.Это избавляет вас от насмешек.