UT on Mac
筆記:在Mac Console上直接執行xcode UT
xcode 的UT 基本上是去執行"otest"這個執行檔(otest 在 /Developer/Tools/下),要執行需要兩個參數
1. -SenTest <para>
<para>: Self, All, <testClassName/testModuleName>
Self 跟 All 不太清楚有什麼差異,在我的case兩個都是全跑
<testClassName/testModuleName> 也可以只給 testClassName
2. <path of your UT bundle>
簡單來說,就是你的UT build出來的那個.octest 檔案的路徑
在順帶一提,如果想在xcode上step by step debug你的UT
1. Add a "Custom Executable" on your project
2. Set "Executable Path" to "Developer/Tools/otest"
3. Finish
4. 對你剛產生出來的Executable按右鍵,選"Get Info",修改下列資訊
on the [General] tab
a. Set the working dir to: Product directory
on the [Arguments] tab, add the followings in Argument field
a. -SenTest Self
b. $(BUILT_PRODUCTS_DIR)/xxx.octest
add the following in the Environment Variable filed
a. OBJC_DISABLE_GC to <YES> --> disable GC, this depends on your project
b. DYLD_FRAMEWORK_PATH to <your framework path>
5. 再來就可以按右鍵 "Start xxx with Breakpoint"
重點來啦!!
如果你設完環境變數(OBJC_DISABLE_GC & DYLD_FRAMEWORK_PATH),然後直接執行
/Developer/Tools/otest -SenTest Self <UT bundle path>
你可能會遇到類似這樣的error
2013-07-30 17:50:57.848 otest[25747:707] The test bundle at /Users/Kimi_wu/source/xxx/testAdapter.octest could not be loaded because it is built for a different architecture than the currently-running test rig (which is running as unknown).
2013-07-30 17:50:57.851 otest[25748:203] *** NSTask: Task create for path '/Users/Kimi_wu/source/xxx/testAdapter.octest/Contents/MacOS/testAdapter' failed: 22, "Invalid argument". Terminating temporary process
網路上的大部分的說法是OCMock.framework沒有copy,所以需要在project裡做些設定,不過我們UT沒有用OCMock....,另一個狀況是,DYLD_FRAMEWORK_PATH 沒有設好,也會有這樣的error message
最後發現,是需要指定otest 執行的arch,所以需要在command前面加"arch -i386",command就會長的像:
arch -i386 /Developer/Tools/otest -SenTest Self <UT bundle path>
當然,arch 要視你的UT bundle 的設定為何
最後發現,是需要指定otest 執行的arch,所以需要在command前面加"arch -i386",command就會長的像:
arch -i386 /Developer/Tools/otest -SenTest Self <UT bundle path>
當然,arch 要視你的UT bundle 的設定為何
留言
張貼留言