Шаблоны C++ поблочного тестирования

Пустая строка в Python эквивалентна логическому значению False, так же как и пустой список. Строка, которую вы представили, представляет собой версию Python троичного оператора (как отмечено в комментарии ниже, в настоящее время устаревшая конструкция, так как Python теперь имеет реальный тернарный оператор ). Он основан на трех правилах:

  • для a and b, если a - False, тогда b не будет оценен
  • для a or b, если a - True, тогда b не будет оценен
  • значение логического предложения - это значение его последнего оцениваемого выражения

Если parameter оценивает True, вторая часть предложения and будет оценена: (" " + parameter). Поэтому он добавит ведущее пространство к parameter, если это не пустая строка. Вторая часть предложения or не будет оцениваться, поскольку вы уже можете сказать, что все выражение True (True или что-либо всегда True).

Если parameter False (пустая строка в этом контексте), вторая часть предложения and не будет оцениваться, поскольку вы уже можете сказать, что это False (False, и все всегда False). Поэтому вторая часть предложения or получает оценку, возвращающую пустую строку.

Вы можете записать ее более подробным образом:

if parameter:
    return " " + parameter
else:
    return ""

16
задан Iocio 23 December 2008 в 01:04
поделиться

4 ответа

Для начала, модульный тест, Ваш код шаблона с параметром, Вы думаете, наиболее вероятен, чтобы пользователь предоставил. Я часто делал вещи шаблонами "на всякий случай" и никогда заканчиваю тем, что ничего не использовал кроме одного типа, который я имел в виду, когда я написал исходный код. Так в этом случае тестирование наиболее вероятного случая покрывает все случаи!

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

6
ответ дан 30 November 2019 в 22:55
поделиться

Повышение. Тест имеет тестирование упрощения компонента шаблонов против набора шаблонных параметров.

3
ответ дан 30 November 2019 в 22:55
поделиться

я имею дополнительный предложение. В дополнение к поблочному тестированию каждый шаблон, исследуйте методы, которые помогут , ограничивают потенциально обширная вселенная аргументов шаблона, которые Ваши пользователи библиотеки могли бы попытаться передать Вашим шаблонам.

, Например: скажите, что Вы только тестируете свои шаблоны с помощью аргументов типа "строка" и "символ". У Вас нет доказательства, что другие аргументы типа будут проблематичны для этого конкретного шаблона, но по той или иной причине Вы "подозреваете", что другой непротестированный args типа будет быть проблематичным.

В случае, таком как вышеупомянутый пример, это не обязательно подразумевает, что необходимо исчерпывающе протестировать другой тип args. Вместо этого у Вас есть случай, который мог бы подразумевать, что необходимо использовать некоторые шаблонные методы метапрограммирования времени компиляции, чтобы гарантировать, что шаблон никогда не используется ни с какими другими аргументами, но "строкой" и "символом".

Один ресурс:

современный Дизайн C++ - Andrei Alexandrescu

Очень вначале в этой книге, автор показывает примеры, такие как:

  • , как сделать шаблон, который самоосуществит тот его первый аргумент типа иметь меньший тип, чем его второй аргумент типа

  • , как обнаружить обратимость и наследование во время компиляции

, "современный Дизайн C++" (несмотря на его довольно широкий/неопределенный заголовок) является довольно усовершенствованным исследованием методов шаблонного программирования.

5
ответ дан 30 November 2019 в 22:55
поделиться

Instanciating шаблон в модульном тесте для тестирования шаблонного класса.

, Каковы риски? Они зависят, что Ваша библиотека делает с шаблонным параметром; думайте о том, какие проблемы могли возникнуть в зависимости от класса, привыкшего к instanciate Ваш шаблонный класс, и записать новым тестам.

, По крайней мере, у Вас будет своя среда поблочного тестирования готовой воспроизвести любую проблему, о которой сообщат.

0
ответ дан 30 November 2019 в 22:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: