Вам не нужно проверять метод String.format
. Это не ваш код, и ваша цель должна состоять в том, чтобы протестировать свой собственный код. Но ваш код использует этот метод, поэтому вам нужно протестировать ваш код. Это часть, которую вы пытаетесь проверить или смоделировать, насколько я понимаю:
String.format(SampleApp.getInstance().getApplicationContext().getString(R.string.due), SampleApp.getInstance().getAccountManager().getBillingDueDate())
, которая делает несколько вызовов SampleApp для получения экземпляра. Поскольку эти вызовы SampleApp.getInstance являются вызовами статических методов, вы не сможете их макетировать. Отправлено недостаточно кода для того, чтобы узнать, что такое SampleApp или что возвращает SampleApp.getInstance()
, или чтобы узнать, возвращаются ли какие-либо из последующих вызовов в этом экземпляре в нулевое значение, но один из них есть. Поэтому я думаю, что для решения этой проблемы вам нужно посмотреть, что возвращает метод getInstance. Если вы не можете прикоснуться к этому коду и надеетесь только изменить ваши тестовые классы, вы не сможете проверить это с помощью mockito из-за статического метода.
Но в противном случаевам нужно будет создать способ для ваших тестов, чтобы при вызове SampleApp.getInstance
возвращался объект mock в качестве экземпляра вместо любого реального экземпляра, который, как я предполагаю, он сейчас возвращает. Затем вы можете смоделировать последующие методы, такие как getApplicationContext и getString, чтобы они возвращали постоянные ответы, чтобы при вызове string.format
не происходил сбой при нулевом вводе.
Одно замечание - если вы все-таки получитезаставляя статический метод getInstance возвращать макет, но убедитесь, что у вас есть надлежащая очистка, когда ваш тест завершен, чтобы вернуть его к тому, что он возвращал изначально, чтобы вы случайно не изменили что-то, что может привести к сбою другого несвязанного модульного теста. Это всегда риск, если вы изменяете что-то, возвращаемое статическим методом в модульном тесте, поскольку вы эффективно меняете его для всех тестов.