String dateFormatted = null;
SimpleDateFormat fmt = new SimpleDateFormat("dd-MMM-yyyy");
try {
dateFormatted = fmt.format(date);
}
catch ( IllegalArgumentException e){
System.out.println(e.getMessage());
}
return dateFormatted;
После отладки вы увидите, что просто GregorianCalendar не может быть аргумент fmt.format ();
На самом деле, никто не нуждается в GregorianCalendar в качестве вывода, даже вам говорят возвращать «строку».
Измените заголовок вашей функции формата на
public static String format(Date date)
и внести соответствующие изменения. fmt.format()
с радостью возьмет объект Date.
Вы определенно хотите разбить задачи. Вот хороший пример конфигурации CruiseControl.NET, которая имеет различные цели (задачи) для каждого шага. Это также использует common.build файл, который может быть общими для проектами с небольшой настройкой.
http://code.google.com/p/dot-net-reference-app/source/browse/#svn/trunk
Я использую TeamCity со сценарием сборки nant. TeamCity помогает установить часть сервера CI, и сценарий сборки nant помогает сделать много задач, что касается поколения отчета.
Вот статья, которую я написал об использовании CI с CruiseControl.NET, это имеет сценарий сборки nant в комментариях, которые могут быть снова использованы через проекты:
Я определенно сломал бы задания. Возможности, Вы, вероятно, внесете изменения в сборках, и будет легче разыскать проблемы, если у Вас будут меньшие задачи вместо того, чтобы перерыть одну монолитную сборку.
Необходимо смочь создать одно большое задание из мелких кусочков, так или иначе.
Мы используем buildbot со сборкой, разломанной на дискретные шаги. Существует баланс, который будет найден между наличием шагов сборки, которые будут сломаны с достаточной гранулярностью и быть полной единицей.
Например, в моей текущей позиции, мы создаем подчасти для каждой из наших платформ (Mac, Linux, Windows) на их соответствующих платформах. У нас затем есть одноэтапное (с несколькими шагами sub), который компилирует их в окончательную версию, которая закончится в заключительных дистрибутивах.
Если что-то идет не так, как надо на каком-либо из тех шагов, довольно легко диагностировать.
Мой совет состоит в том, чтобы выписать шаги на электронной доске в как неопределенные условия, как Вы можете и затем основывать Ваши шаги на этом. В моем случае, который был бы:
Хороший день,
Поскольку Вы говорите об интеграционном тестировании, моя большая (очевидная) подсказка должна была бы сделать тестовый сервер созданным и настроенным максимально близко к среде развертывания как возможный.
</thebloodyobvious> (-:
аплодисменты, Rob
Подход, который я одобряю, является следующей установкой (На самом деле предполагающий, что Вы находитесь в проекте.NET):
На многих проектах Вы находите, что существуют разные уровни тестов и операций, которые происходят, когда кто-то делает регистрацию. Иногда они могут увеличиться вовремя до такой степени, когда, это может быть долгое время после сборки, прежде чем dev будет видеть, повредили ли они сборку с регистрацией.
То, что я делаю в этих случаях, создают три сборки (или возможно два):
Ключевая вещь о любой системе CI состоит в том, что это должно быть органическим и постоянно настроить. Существуют некоторые большие расширения CruiseControl.NET, который регистрирует и строит диаграмму синхронизаций сборки и т.д. для шагов и позволяет Вам сделать исторический анализ и тем самым позвольте Вам непрерывно настраивать сборки для хранения их мгновенными. Это - что-то, что менеджеры находят трудно, чтобы признать, что поле сборки, вероятно, заставит Вас напряженно трудиться в течение одной пятой Вашего рабочего времени только для остановки его прекращение работу.