我有一个从.c文件传递到java程序的字符串。该函数如下所示:
JNIEXPORT jstring JNICALL Java_MyJNI_getName(JNIEnv *env, jobject thisObj) {
return (*env)->NewStringUTF(env, "Name");
}
然而,在我的单元测试中,它说“名称”不是返回的内容。
/**
* test to see if name is retrieved properly
*/
@Test
public void getNameTest1(){
MyJNI m = new MyJNI();
assertSame(m.getName(), "Name");
}
此测试提供此错误消息:
java.lang.AssertionError: expected same: <Name> was not:<Name>
所以我不明白它的区别。我猜这是与空字符或换行符有关,但我无法弄明白。
答案 0 :(得分:1)
assertSame(expected, actual)
检查对象是否相同
实例(根据==
运算符)。你得到了断言
错误,因为您比较了String
的2个不同实例,
虽然两者内容相同。
你可能想检查两个字符串是否相等(根据
equals
方法)。为此,您需要使用
assertEquals(m.getName(), "Name");