Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
Удостоверьтесь, что это легко и быстро к тестам записи. Затем запишите большому количеству из них.
я нашел, что очень трудно предсказать заранее, какие тесты будут теми, которые заканчивают тем, что перестали работать или теперь, или длинный путь по линии. Я склонен проявлять подход дробовика, пытаясь поразить угловые случаи, если я могу думать о них.
кроме того, не бойтесь записи больших тестов, которые тестируют набор вещей вместе. Конечно, если тот тест сбои, могло бы занять больше времени выяснить то, что пошло не так, как надо, но часто проблемы только возникают, после того как Вы начинаете склеивать вещи.
Мои эмпирические правила:
Я думаю, что Вариант использования оказывается очень полезным для получения лучшего тестового покрытия. Если у Вас есть своя функциональность с точки зрения варианта использования, это легко преобразовывается в различные сценарии тестирования для покрытия положительный, отрицание и исключения. Вариант использования также указывает предпосылки и подготовительную школу данных, если любой для того же, которое оказывается очень удобным при записи тестовых сценариев.
тесты записи, которые проверяют базовую функциональность и отдельные примеры использования намерения программного обеспечения. Затем тесты записи, чтобы проверить пограничные случаи и проверить ожидаемые исключения.
, другими словами, запишите хорошие модульные тесты из клиентской перспективы и забудьте о метриках для тестового кода. никакие метрики не скажут Вам, если Ваш тестовый код будет хорош, только функционирующее программное обеспечение говорит Вам, когда Ваш тестовый код хорош.
Я не согласился бы, что покрытие кода не является полезной метрикой. Если у Вас нет 100%-го покрытия кода, которое, по крайней мере, указывает на области, которым нужно больше тестов.
В целом, хотя - после того как Вы получаете соответствующее покрытие оператора, следующее логическое место, которое пойдет, находится в записи тестов, которые или разработаны для прямой проверки требований, чтобы код был написан для встречи, или которые предназначаются для выделения пограничных случаев. Ни один из них не упадет естественно ни из чего, что можно легко измерить непосредственно.