Юнит-тесты могут быть в любой упаковке. По сути, это просто отдельные классы, используемые для проверки поведения тестируемого класса.
Самым важным вопросом здесь является то, что размещение тестовых классов JUnit является константой для проекта, частью которого они являются. То есть либо они всегда находятся в одном пакете, либо в подпакете с именем test, либо в отдельном пакете.
Я предпочитаю помещать тестовые классы JUnit в отдельный пакет, определяемый заменой имени верхнего уровня на 'test', поэтому org.util.strings.StingUtil
будет иметь тестовый класс Junit с именем test.util.StringUtilTest
.
Таким образом, очень легко найти тестовые классы, и их можно легко разделить на библиотеки .jars и их тестовые .jars. Также вы не рискуете, чтобы тест JUnit по неосторожности использовал доступ уровня пакета к тестируемому классу; тестовый класс должен использовать тот же интерфейс, что и остальной мир. (На мой взгляд, хуки уровня пакета, специально предназначенные для поддержки тестирования, являются злыми, поэтому лучше убедиться, что они бесполезны, поместив тест в другое место.)