[英]Mockito, what happens if I do not close my Mocked static method
void givenStaticMethodWithNoArgs_whenMocked_thenReturnsMockSuccessfully() {
MockedStatic<StaticUtils> utilities = Mockito.mockStatic(StaticUtils.class)
utilities.when(StaticUtils::name).thenReturn("Eugen");
assertThat(StaticUtils.name()).isEqualTo("Eugen");
utilities.close();
}
為什么我什至需要關閉它?
正如javadoc所說:
如果此對象從未關閉,則靜態模擬將在啟動線程上保持活動狀態
由於該類實際上實現了AutoClosable
接口,您可以簡單地在try-with-resources
使用該類 - 這是javadoc 中的推薦:
assertEquals("foo", Foo.method());
try (MockedStatic mocked = mockStatic(Foo.class)) {
mocked.when(Foo::method).thenReturn("bar");
assertEquals("bar", Foo.method());
mocked.verify(Foo::method);
}
assertEquals("foo", Foo.method());
如果您希望 Mock 在所有測試期間都處於活動狀態,您可以永遠不要關閉 Mock。 但是,如果您這樣做,我會在 init 方法中而不是在測試中進行。 但是,如果您的測試應該是獨立的並且不顯示此類行為,則需要關閉它。
就我而言,當我沒有在 try-with-resource 中包含 try 時,我隨后的 TC/Junits 開始失敗,不知道是什么原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.