Yo también tiendo a poner mis pruebas en el mismo paquete pero bajo un directorio raíz diferente. Esto me permite probar clases privadas de paquete o acceder a clases privadas de embalaje mientras pruebo algo más en el paquete. Se guardan en un árbol de directorio separado para permitir su exclusión del resultado desplegado (en particular, para garantizar que el código de prueba no ingrese accidentalmente en el código de producción). Lo que más importa, sin embargo, es lo que funciona para su situación.
En términos de la cantidad de clases de prueba por clase de producción, la teoría que he visto es que se escribe una clase de prueba por accesorio, es decir, por estructura de configuración. En muchos casos, eso es lo mismo (o lo suficientemente parecido) a una clase de prueba por clase de producción, pero a veces escribo más clases de prueba (en particular, las pruebas de igualdad tienden a separarse) para una clase de producción dada, y ocasionalmente una clase de prueba de para un grupo de clases de producción (relacionadas) (por ejemplo, para probar el patrón de Estrategia).
Principalmente, no me preocupo demasiado por la teoría, pero modifico las pruebas según sea necesario para mantener la duplicación al mínimo absoluto.
Algo similar aquí, excepto que usamos "src/com/foo/..." y "test/com/foo/...". –
Personalmente, encuentro que la respuesta de Bob es aún mejor. Incluso si un JUnit prueba _es_ código fuente. – guerda
Honestamente, la única razón por la que fui con src/main/java y src/test/java es para no tener que hacer ninguna configuración adicional de Maven. –