Многие люди в этой теме говорят, что плохая идея, чтобы код работал немного по-другому, пока работает под JUnit. Я в целом согласен, но я думаю, что есть некоторые исключения.
Например, я сейчас пишу тесты INTEGRATION (в отличие от Unit) для приложения, которое подключается к БД.
Эти приемочные испытания часто требуют полной повторной инициализации БД с конкретными данными испытаний.
Очевидно, я не хочу, чтобы это КОГДА-ЛИБО было сделано на реальной производственной базе данных, потому что это могло бы полностью стереть ценные производственные данные.
Самый простой способ гарантировать, что этого никогда не произойдет, состоит в том, чтобы лишить код возможности подключаться к производственной БД, когда он работает под JUnit. Это, в свою очередь, может быть сделано, если, например, Factory, которая генерирует соединение, может сказать, что работает под JUnit, и в этом случае вернет нулевое соединение, если только база данных, к которой мы пытаемся подключиться, не имеет известного имени. быть тестовой базой данных (например, «testdatabase»).