Mockito 3.4.0 Stati c Исключение Mockito - PullRequest
2 голосов
/ 05 августа 2020

Я получаю следующее исключение при попытке имитировать метод stati c.

Для SettingsUtility stati c mocking уже зарегистрирован в текущем потоке. Чтобы создать новый макет, существующий статус c фиктивная регистрация должна быть снята с регистрации

@Before
fun setUp() {
    mockStatic(SettingsUtility::class.java) {
        `when` { SettingsUtility.method(app) }.thenReturn { "" }}
}

Ответы [ 2 ]

3 голосов
/ 07 августа 2020

Метод MockedStati возвращенного объекта c .close () должен быть вызван после завершения теста, иначе макет останется активным в текущем потоке.

Я не уверен, совпадает ли он с тем, как это сделано в Java. Надеюсь, этот Java фрагмент кода поможет

private static MockedStatic<SettingsUtility> mockedSettings;

@BeforeAll
public static void init() {
    mockedSettings = mockStatic(mockedSettings.class);
}

@AfterAll
public static void close() {
    mockedSettings.close();
}
3 голосов
/ 07 августа 2020

Попробуйте сделать так, вы не получите эту ошибку. У меня это сработало.

try(MockedStatic mocked = mockStatic(SettingsUtility.class)) {
        mocked.when(SettingsUtility::method).thenReturn("whatever you want");
    }
...