Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
Разделите свои тесты на 2 набора:
Функциональные испытания являются историей в расчете на пользователя. Модульные тесты на класс. Бывшая проверка, что Вы на самом деле поддерживаете историю, последнее осуществление и документируете Вашу функциональность.
существует один каталог (пакет) для функциональных испытаний. Модульные тесты должны быть тесно связаны с функциональностью, которую они осуществляют (таким образом, они рассеиваются). Вы перемещаете их и осуществляете рефакторинг их, поскольку Вы перемещаете & осуществите рефакторинг свой код вокруг.
Менее важная часть организует тесты.
я запускаю путем помещения тестов в класс, который касается класса под тестом, таким образом, com.jeffreyfredrick. Нечто имеет тест com.jeffreyfredrick. FooTest. Но если некоторому подмножеству тех классов будет нужна различная установка тогда, то я перемещу их в их собственный тестовый класс. Я поместил свои тесты в отдельный исходный каталог, но сохраняю их в том же проекте.
более важная часть осуществляет рефакторинг тесты.
Да я пытаюсь осуществить рефакторинг свои тесты, когда я иду. Цель состоит в том, чтобы удалить дублирование в то время как все еще остающийся декларативный и легкий читать. Это верно и в тестовых классах и через тестовые классы. В тестовом классе у меня мог бы быть параметрический метод для создания тестовой фальшивки (насмешка или тупик). Мои тестовые фальшивки являются обычно внутренними классами в тестовом классе, но если я нахожу, что существует потребность, я вытащу их для повторного использования через тесты. Я также создам класс TestUtil с общепринятыми методиками, когда это будет казаться соответствующим.
я думаю, осуществляя рефакторинг Ваш, тесты важны для долгосрочного успеха поблочного тестирования на крупных проектах. Вы когда-либо слышали, что люди жалуются на то, как их тесты являются слишком хрупкими или препятствуют им изменение? Вы не хотите быть в состоянии, где изменение поведения класса означает делать десятки или даже сотни изменений в Ваших тестах. И точно так же, как с кодом, Вы достигаете этого посредством рефакторинга и содержания в чистоте тестов.
Тесты код.
Я пишу класс модульного теста для каждого класса в приложении и сохраняю тестовые классы организованными в той же структуре пакета как классы под тестом.
Внутренняя часть каждый тестовый класс у меня действительно нет большого количества организационной структуры. У каждого только есть горстка методов для каждого открытого метода в классе под тестом, таким образом, у меня никогда не было проблемы при нахождении того, что я ищу.
Для каждого класса в программном обеспечении я поддерживаю класс модульного теста. Классы модульного теста следуют за той же иерархией пакета как классы, которые тестируются.
я сохраняю свой код модульного теста в отдельном проекте. Некоторые люди также предпочитают сохранять свой тестовый код в том же проекте в соответствии с отдельным исходным каталогом названным 'тестом'. Вы могли следовать за тем, что чувствует себя комфортно Вам.
Я пытаюсь посмотреть на модульные тесты как на проект самостоятельно. Как с любым проектом организация должна следовать за некоторой внутренней логикой. Это не должно однако быть конкретно или официально определенное - что-либо, чем Вы довольны, в порядке, пока это сохраняет Ваш проект хорошо организованным и чистым.
Так для модульных тестов I обычно или следовать за основной структурой кода проекта или (иногда, когда вызовы ситуации его) фокусируются на функциональных областях вместо этого.
Отъезд их в одной "куче" состоит в том, как Вы могли бы предположить грязным и трудным поддержать