Прежде всего:
- Хорошие тесты находят ошибки. (Тесты не должны найти ошибку сейчас, они также являются хорошими тестами, когда они находят ошибку где-то в будущем, когда кто-нибудь что-то меняет.)
- Плохой тест не обнаружил ошибок. ( Если ни один тест никогда не заканчивался, все время, пока проект разрабатывался или поддерживался, тогда тест бесполезен. )
- И тесты никогда не доказывают, что ошибки нет!
Поэтому, когда я пишу тесты, я стараюсь писать их как можно проще, но также стараюсь проверять все, что, как я верю, может пойти не так.
Так, например, ваши Restfull Services:
Конечно, в логике может быть много ошибок, поэтому для них нужно написать много тестов. Но эти тесты могут напрямую вызывать метод и, таким образом, его относительность легко написать тесты. Гораздо проще, чем вызывать методы через некоторые HTTP-вызовы.
Но, конечно, в HTTP-приглашении может быть ошибка, поэтому ее необходимо проверить. Но потому что я уже проверил «код» с помощью моих обычных модульных тестов. Мне нужно только не так много из этого сложного для написания теста. И в этом тесте больше внимания уделяется ошибкам, которые могут быть сделаны при неправильном отображении или неправильной серилизации.
Итак, в конце: используйте все виды тестов, которые вы можете написать (Unit Test, Mocked Stuff, HttpUnit test, Selenium, ...). Но сначала подумайте о проблеме, которую вы хотите проверить. И выберите тип теста, в котором вы можете легко написать и поддерживать этот тест.
Кстати @see RestFuse - расширение JUnit