2014-04-24 122 views
6

我對某些C++代碼有一個Android JNI包裝。 C++代碼有它自己的一套單元測試。
我想爲JNI包裝類編寫Java單元測試。單元測試JNI調用

有一種方法,以單元測試從桌面控制檯的Android JNI .so包裝器API例如在Windows上?也許使用桌面Java框架,但使用所有Android SDK調用?

回答

1

因爲調用native的類只是一個包裝類,所以你可以單元測試JNI層。如果這是你想要的,那麼直接對你的JNI函數進行單元測試會有點困難。但是,您仍然可以將JNI函數的「核心」完成所有工作,並將其放在單獨的.c文件中。所以基本上,你會把你的新類加入到JNI類中,並讓這個類完成所有的工作。現在,你將有一整套的方法,可以很容易地進行單元測試一個.C類。

希望有幫助!

+1

是的,這可能是一個很好的方法,是非常有效的,但要知道,重要的是不同的平臺和C庫行爲方式略有不同的方式 - 例如細微的錯誤,可以在32位的Android系統比上經歷了不同的當爲(典型的)64位開發主機構建時,它不一定會捕獲有關實現定義行爲的風險假設。 –

+0

正如我在問題中所說的那樣,C++代碼已經有了它自己的單元測試,就像C++ API的C包裝一樣。我想要的UT是JNI代碼,它通常具有特定於平臺的數據轉換,這些數據轉換不能真正移植到本地C或與本地C隔離。 –