Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Мы используем Gallio/MbUnit в течение года теперь. Мы довольно довольны им, парни Галлио продолжают представлять прохладные новые возможности, и разработка активна. Если Вы решаете использовать его, вот некоторые подсказки/примечания:
Когда мы оценили Галлио, мы испытали проблемы устойчивости с крупными проектами. Наши меньшие проекты работали красиво, как бы то ни было. Большое понятие... Я думаю, что это генерирует большой шум, после того как это немного более усовершенствовано.
Я мог бы хотеть добавить, что поддержка Resharper отсутствовала (или поврежденная) некоторое время, но я услышал, что она вернулась.
Последний выпуск Gallio (3.0.6) решает многие проблемы стабильности, упомянутые в этих постах. В частности, Icarus теперь намного более стабилен и имеет возможность подключаться к встроенному отладчику, поэтому он может быть даже быстрее, чем Resharper, который перекомпилирует код перед каждым запуском теста.
Я оценивал Галлио, и это - действительно большое понятие. Теперь я не должен говорить моим разработчикам, какую платформу поблочного тестирования они должны использовать, потому что она имеет интеграцию со всеми главными, о которых я знаю. Они могут использовать, которым когда-либо они являются самыми довольными, и я добираюсь, протестированная единица кодируют.
Интеграция Resharper хороша также. Я могу выполнить все модульные тесты с Resharper, не имея необходимость выскакивать к командной строке для выполнения их.
Это должно определенно превратить поблочное тестирование представления в магазины, намного легче, по-моему. Я соглашаюсь с @David, оборотная сторона - то, что он еще не выпущен.
На передней стороне преимуществ интеграция со всем довольно хороша :) Серьезно, я - огромный поклонник экспериментальной интеграции с Системой Команды Visual Studio (снимки экрана здесь). Я думаю, что действительно понижает панель для плохо знакомых с поблочным тестированием.
Единственный недостаток с моей точки зрения до сих пор является тем, что это еще не выпущено.
Это ужасно нестабильно, я использовал его месяца 3-4 назад, он был ужасно нестабильным и медленным.
Я только что попробовал его, и он вылетает, когда вы нажимаете «Сохранить», затем он никогда не открывается снова, если вы не пойдете и не очистите «Локальные настройки», я полагаю, он все еще ужасно нестабилен.
Я бы хотел, чтобы они перестанет добавлять новые функции и вместо этого исправит эти довольно очевидные ошибки.
PS Project имеет 1000 ~ модульных тестов и использует nUnit (возможно, это просто мой nUnit и Gallio не очень хорошо работают вместе)
Я действительно хочу использовать это и у меня 3.1 - 313, я не мог Даже сохранить проект без сбоя!
В конце концов, преимущества плохих вещей Здесь:
Отличная поддержка различных вариантов, я использовал ее для nUnit и mbUnit, это действительно хорошо. Он даже очень хорошо поддерживает RowTest в nUnit.
GUI довольно крутой, чистый
Я тоже пробовал Gallio, и он работает намного медленнее, чем TDD.Net или собственный инструмент запуска тестов NUnit GUI. Он даже медленнее, чем бегун Resharper!
Я должен добавить, что здесь я говорю о запуске тестов NUnit.
Я не помню точных цифр, но на те же тесты, которые NUnit завершил за 30 секунд (работа в одном потоке, одном процессе, нескольких доменах), потребовалось около 3 минут.
Это само по себе уже делает его бесполезным. Добавьте к этому громоздкий графический интерфейс, и вы поймете, что от этого лучше не подходить.
Дополнительная информация:
В моем решении у меня есть тесты NUnit, и недавно начал добавлять спецификации MSpec . У меня открыт графический интерфейс NUnit для автоматического перезапуска моих старых тестов (все новые тесты написаны как MSpecs) после того, как я перекомпилирую и изменят тестовые библиотеки DLL.
Я использую TDD.Net для выполнения своих спецификаций Mspec.
Это позволяет мне уже продолжить работу после того, как мои спецификации будут завершены, в то время как бегун NUnit Gui все еще завершает свою работу.