Так же, как статические в Java - ссылки на объекты сложно поменять в целях тестирования, поэтому вы, как правило, хотите их избегать, за исключением утилит без использования побочных эффектов, таких как Math.min, Math.max. Как и в случае статики Java, объекты, содержащие состояние, особенно усложняют тестирование.
У объектов Scala есть одно преимущество перед Java-статикой - вы можете заставить свой объект расширять некоторый супертип и обращаться к нему через этот интерфейс. Затем вы можете внедрить этот объект в конструктор вашего клиентского класса, чтобы ваш клиент стал более тестируемым:
object MyRunnable extends Runnable {
def run() { }
}
class Client(r: Runnable) {
// ..
}
new Client(MyRunnable)
new Client(mock[Runnable]) // you can substitute the object with a mock for tests
С простой статической Java это невозможно. Вы можете сделать то же самое с синглетами в Java (на которые похожи объекты Scala).