Проблема в том, что вы указали время, которого не существует. Часы идут так, что 2 часа ночи становятся 3 часа ночи - 2:25 утра никогда не бывает.
Теперь есть различные варианты того, что может здесь произойти. В Время Ноды Я полагаю, что мы бросим исключение (это план в любом случае); Я полагаю, что Joda Time (гораздо лучший Java API, чем Date / Calendar / SimpleDateFormat - вам следует подумать о переходе на него, если возможно) даст вам 3:25 утра, то есть 25 минут после перехода.
Что бы вы хотели бы, чтобы произошло, когда вам дали комбинацию даты / времени, которая невозможна из-за перехода на летнее время? В этой ситуации трудно точно знать, что вы подразумеваете под «неправильными» результатами. Я бы сказал, что ваш модульный тест несколько ошибочен - нет никакого возможного времени, которое должно быть отформатировано к этому времени.
Мое предположение относительно того, почему часовой пояс IBM «работает», заключается в том, что он может использовать старые данные о часовых поясах до того, как США изменили свои переходы DST. Попробуйте использовать 28 марта, и тогда я думаю, что было бы иначе - вы, вероятно, обнаружите, что тесты провалились так же, как в зоне IBM, но не в зоне Sun :) Солнечная зона не будет рассматривать это как переход на летнее время.)