gpt4 book ai didi

java - 如何对使用 JNI 的库进行单元测试?

转载 作者:太空宇宙 更新时间:2023-11-04 11:52:35 24 4
gpt4 key购买 nike

单元测试最佳实践要求使用控制反转,以确保单元测试彼此独立运行,即使它们依赖于单例实例(每个测试都有自己的“单例”)。

对于测试使用 JNI 来操作每个进程仅存在一次的 native 资源(例如终端)的库的建议是什么?

我不是在询问测试实际的 JNI 代码,而是在询问依赖于 native 代码作为副作用的 Java 代码。

最佳答案

和平常一样。

您创建您的测试代码(剪切)使用的库类的模拟,并验证您的剪切和该模拟之间的通信。

class JniUsageTest{

@Rule
public MockitoRule mockitoRule = MockitoJUnit.rule();

@Mock
private JniInterfaceClass jni;

@Test
public void testJniCommunication_SomethingToWrite_PassedToInterface(){
// arrange
doReturn("the Answer from JNI").when(jni).calledByCut(any(Object.class));
YorClassUnderTest cut = new YorClassUnderTest(jni);

// act
String resultContainingJniReturn = cut.doSomethingExpectedToWtiteToJni();

// assert
verify(jni,times(10)).calledByCut(any(Object.class));
assertThat(resultContainingJniReturn, containsString("the Answer from JNI"));
}

}

关于java - 如何对使用 JNI 的库进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41663539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com