Когда мы смотрим на ваш класс MyClass
и как он будет использоваться позже, он будет иметь следующую структуру:
+---------------+ +--------------+ +----------------+
|Production Code| +-------> |MyClass.init()| +-------> |getApplication()|
+---------------+ +--------------+ +----------------+
Теперь, чтобы протестировать метод MyClass.init()
, полезная настройка теста может выглядеть следующим образом:
+---------+ +--------------+ +-----------------------+
|Test Code| +-------------> |MyClass.init()| +-------> |mocked getApplication()|
+---------+ +--------------+ +-----------------------+
Тестовый код вызовет метод MyClass.init()
, потому что это метод, который вы хотите протестировать. Вы не хотите тестировать другие классы / методы, которые вызываются MyClass.init()
, и, таким образом, это может быть хорошим вариантом для насмешки над ними. (Обратите внимание, что это не является обязательным, иногда вы можете просто достичь всех целей модульного тестирования, используя другие компоненты, которые используются без изменений.)
Однако вы сделали следующее:
+---------+ +---------------------+
|Test Code| +-------------> |mocked MyClass.init()|
+---------+ +---------------------+
И теперь вы можете ясно видеть, почему вы также не видите никаких покрытых строк в оригинальном MyClass.init()
, потому что это просто не вызывается.