.c 파일에서 Java 프로그램으로 전달되는 문자열이 있습니다. 이 함수는 다음과 같습니다 :Jstring이 Java로 전달 된 것이 예상과 다릅니다.
JNIEXPORT jstring JNICALL Java_MyJNI_getName(JNIEnv *env, jobject thisObj) {
return (*env)->NewStringUTF(env, "Name");
}
그러나 내 단위 테스트에서는 "이름"이 반환되지 않습니다.
java.lang.AssertionError: expected same: <Name> was not:<Name>
그래서 나는 그 차이가 무엇인지 이해가 안 :
/**
* test to see if name is retrieved properly
*/
@Test
public void getNameTest1(){
MyJNI m = new MyJNI();
assertSame(m.getName(), "Name");
}
이 테스트는이 오류 메시지를 제공합니다. 나는 그것이 null 문자 또는 줄 바꿈과 관련이 있다고 추측하고 있지만 그것을 이해할 수는 없다. 객체가 동일한 인스턴스이다
파일에서 읽은 이름을 확인하십시오. 당신은 "그것을 알아낼"필요가 있습니다. 그것이 바로 디버거입니다. –
읽기 파일은 단위 테스트의 필수 부분이 아니 었습니다. 실수로 추가했습니다. 정직한 실수이지만 그 줄을 삭제 한 후에도 오류가 여전히 남아 있습니다. – Bertie
Berti,이 사이트를 처음 접했을 때 누군가 질문에 답변하고 작동하면 왼쪽에있는 번호를 클릭하여 승인하십시오. –