Один из способов взглянуть на это - переместить ссылочный знак с
int &R = x;
на
int& R = x;
R
- это int&
- это ссылка на [116 ], что означает, что R
не освободит память, выделенную x
, когда R
выйдет из области видимости, но это будет ссылка на x
, пока x
живет. Настоящим объявляется R
, и его объявление не может быть изменено, поэтому, если вы попытаетесь:
<type declaration> R = <value>
, оно должно завершиться неудачей - поскольку R
уже объявлено.
Но вы можете присвоить что-либо для того, что R
является ссылкой на
R = <value>
... до тех пор, пока тип value
равен преобразуется в тип, на который ссылается R
(0-1 операторы преобразования).
Существует много стратегий оптимизации, которые можно сделать для улучшения пропускной способности тестов, но необходимо спросить себя, что цель этого тестирования, и почему это должно быть быстро.
Некоторые тесты занимают время. Это - факт жизни. Интеграционные тесты обычно занимают время, и обычно необходимо настраивать среду, чтобы смочь сделать их. При установке среды Вы захотите иметь среду, которая является максимально близко к заключительной продуктивной среде.
У Вас есть два варианта:
По моему опыту, лучше иметь среду интеграции, которая корректна, и находит ошибки и представляет заключительную продуктивную среду соответственно. Я обычно выбираю опцию 2 (1).
Очень заманчиво сказать, что мы протестируем все все время, но в realilty Вам нужна стратегия.
(1) Кроме того, если существуют загрузки ошибок, которые только найдены в интеграции, в этом случае, забудьте все, что я сказал :-)
Я предложил бы иметь несколько высоких уровней, вплотную тестирует, и если кто-либо из тех сбоев, запускает 'более высокое разрешение' тесты.
Думайте о выполнении технической поддержки по телефону...
Ваш компьютер работает? если да, сделанный. Если не, Ваш компьютер включает вообще?...
Для моего поблочного тестирования у меня есть несколько быстрых тестов как "мой компьютер, работает?" если они передают, я не выполняю остальную часть моего комплекта. Если какой-либо из тех тестовых сбоев, я выполняю связанный комплект более низких тестов уровня, которые высказывают мне более высокое мнение разрешения в тот отказ.
Мое представление состоит в том, что выполнение всестороннего комплекта высокоуровневых тестов должно занять меньше чем половину секунды.
Этот подход дает мне и скорость и деталь.
Мы используем.NET и NUnit, который поддерживает категории (атрибут, можно поставить тест). Затем мы берем длительные тесты и помещаем их в NightlyCategory так, чтобы они только были выполнены во время ночных сборок а не в непрерывных сборках, которые мы хотим выполнить быстро.
Я соединил презентацию Наборов тестов С турбинным двигателем. Вторая половина нацелена на разработчиков Perl, но первая половина могла бы оказаться полезной для Вас. Я не знаю достаточно о Вашем программном обеспечении, чтобы знать, является ли это соответствующим.
В основном это имеет дело с методами для ускорения использования базы данных в наборах тестов и запущения тестов в единственном процессе для предотвращения постоянной перезагрузки библиотек.
то, что среда должна быть настроена, который НАМНОГО медленнее (банкомат ~1000 секунд)!
Хорошо, по крайней мере, Вы знаете, где сфокусироваться... Вы знаете, где то время проводится?
Очевидно, любое решение собирается зависеть от специфических особенностей здесь.
Существует три решения, которые я использовал в этом виде ситуации:
используйте больше машин. Возможно, Вы могли разделить свои сервисы на две машины? Это позволило бы Вам отбросить свое время установки в 1/2?
использовать более быстрые машины? В одной ситуации я знаю о в команде, сокращает их интеграционный тест, выполняющийся от чего-то как 18 часов к 1 часу путем обновления аппаратных средств (несколько центральных процессоров, быстрого устройства хранения данных RAID, больше RAM, работы). Уверенный это стоило им на порядке $10 тысяч, но это стоило того.
используйте в базе данных памяти для интеграционного теста. Да я знаю, что Вы захотите иметь тесты против реальной базы данных также, но возможно Вы могли запустить тесты первоначально против в версии памяти для получения быстрой обратной связи.
Buildbot: http://buildbot.net/trac, который я не могу рекомендовать этому достаточно, если Вы делаете Непрерывную Интеграцию (автоматизированное тестирование). С быстрой конфигурацией все наши модульные тесты выполняются каждый раз, когда существует фиксация, и более длительные интеграционные тесты выполняются периодически в течение дня (3 раза в последний раз, я проверил, но это может быть легко изменено).