Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
传递给Java的Jstring与预期的不同_Java_C_Eclipse_Java Native Interface - Fatal编程技术网

传递给Java的Jstring与预期的不同

传递给Java的Jstring与预期的不同,java,c,eclipse,java-native-interface,Java,C,Eclipse,Java Native Interface,我有一个从.c文件传递到java程序的字符串。函数如下所示: JNIEXPORT jstring JNICALL Java_MyJNI_getName(JNIEnv *env, jobject thisObj) { return (*env)->NewStringUTF(env, "Name"); } 然而,在我的单元测试中,它说“Name”不是返回的内容 /** * test to see if name is retrieved properly */ @Test public

我有一个从.c文件传递到java程序的字符串。函数如下所示:

JNIEXPORT jstring JNICALL Java_MyJNI_getName(JNIEnv *env, jobject thisObj) {
return (*env)->NewStringUTF(env, "Name");

}
然而,在我的单元测试中,它说“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>
java.lang.AssertionError:预期相同:不是:
所以我不明白有什么区别。我猜这与空字符或换行符有关,但我无法理解

资产相同(预期,实际)
检查对象是否相同 实例(根据
==
运算符)。你明白了吗 错误,因为您比较了
字符串的两个不同实例,
虽然两者的内容看起来一样

您可能需要检查这两个字符串是否相等(根据
等于
方法)。要做到这一点,您需要使用

assertEquals(m.getName(), "Name");

检查从文件中读取的名称。你必须“弄清楚”;这就是调试器的用途。读取文件不是单元测试的必要部分,我无意中添加了它。这是一个诚实的错误,但删除该行后错误仍然存在。伯蒂,你是新来此网站的,但当有人回答你的问题并且该问题有效时,请单击该问题左侧的数字进行批准。谢谢,这是错误。现在回想一下,我知道在比较语句中的字符串时.equals()和==之间的区别,但没有对断言应用相同的思想。@Bertie如果答案解决了你的问题,那么接受它。