#java #linux #windows #mockito
#java #linux #Windows #mockito
Вопрос:
У меня есть Java-проект, который будет выполняться как в Windows, так и в Linux. В нем есть оболочки для специфичных для Windows вызовов ОС и для Linux ether. Как я могу написать модульные тесты, которые будут выполняться на каждой платформе без проблем? Я пытался имитировать конкретные вызовы ОС, но я получил следующую ошибку:
NTFSHandlerUnitTest > impersonateTest() FAILED
java.lang.UnsatisfiedLinkError: Unable to load library 'Advapi32': Native library (linux-x86-64/libAdvapi32.so) not found in resource path
Мой тест:
@InjectMocks
WinFSHandler handler;
@Mock
WindowsAuthProviderImpl provider;
@Mock
Advapi32Util.Privilege privilege;
@Mock
ConfigClientProperties.Credentials cred;
@BeforeEach
public void initMocks() {
MockitoAnnotations.initMocks(this);
}
@Test
void impersonateTest() {
IWindowsIdentity identity = mock(IWindowsIdentity.class);
when(provider.logonDomainUserEx(any(), any(), any(), anyInt(), anyInt() ))
.thenReturn(identity);
when(privilege.enable()).thenReturn(null);
boolean result = handler.Impersonate();
assertTrue(result);
}
Комментарии:
1. Добавьте профиль Windows и профиль Linux для своих тестов… и разделите тесты
2. Но когда я буду запускать тестовое покрытие, специфичный для этой ОС код будет считаться непокрытым.