Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Мальчик, это - довольно общий вопрос. Я приложу все усилия, но готов видеть, что я отсутствую милей.
Предположения
первое, что нужно сделать состоит в том, чтобы организовать (или план) Ваш код так, чтобы это могло быть протестировано. Два самых популярных шаблона разработки для этого в то время, кажется, MVP и MVC. Оба отделяются логика из приложения далеко от представление так, чтобы можно было протестировать логику без представления стоящие на пути (веб-страницы).
Или MVP или MVC будут эффективными. MVC имеет преимущество наличия платформы Microsoft почти готовый пойти .
, Как только Вы выбрали шаблон платформы, который поощряет тестируемость, необходимо использовать инструмент поблочного тестирования. NUnit является хорошей начальной точкой. Профессионал Visual Studio имеет , комплект тестирования создал его , но NUnit + TestDrive.NET также работы в IDE.
Это - вид уничтожения ружья информации. Я надеюсь некоторые, если это совершает нападки. Прагматическая Книжная полка имеет хорошая книга, затрагивающая тему .
Эти платформы полезны для интеграция тестирование, но они не могут обеспечить поблочное тестирование, то есть, тестируя Представление, изолированное от персистентности, бизнес-логики, безотносительно.
Для единица Asp тестирования. Сетевые Веб-формы, а также MVC, можно использовать Ivonna. Например, можно дразнить доступ к базе данных и проверить, что дразнившие записи отображены в datagrid. Или можно дразнить поставщика членства и протестировать зарегистрированный сценарий, не имея необходимость перейти к странице входа в систему и введя учетные данные, как с интеграционным тестированием.
Был ряд экранной демонстрации приблизительно один год назад на Полиморфном Подкасте, который сделал довольно хорошую вводную пошаговую демонстрацию реализации MVP в ASP.NET. Реализованный этот путь, модульные тесты встают на свое место намного более естественно.
Смотрите на http://selenium.openqa.org/ , это предлагает хороший автоматизированный способ встроить модульные тесты, сцепляющиеся в браузер. существует хороший плагин Firefox для записи тестов и может использовать почти любую платформу поблочного тестирования. У нас было представление/демонстрация в нашей группе локального пользователя, встречающейся в прошлом месяце, и это выглядело потрясающим.
WatiN является лучшим, который я нашел. Это интегрируется в поблочное тестирование Visual Studio или nunit & можно сделать в значительной степени что-либо, в чем Вы нуждаетесь в браузере (нажмите на ссылки, отправьте формы, ищите текст/изображения, и т.д.), плюс он записан в .net, таким образом, у Вас не должно быть установленного рубина (как Вы делаете для воды, которая является потрясающим инструментом тем не менее)
NUnit является способом пойти для Вас. Вы могли найти некоторые ссылки здесь:
Your best bet is separating the model logic from presentation and thoroughly unit testing the model with NUnit or similar. Testing the users interaction with the web page can be fiddly.
If you actually do want to unit test the users interaction with the web page some of the afformentioned tools such as waitn seem good, an addition to that which I've heard of is Selenium