【React Native】文件翻譯閱讀紀錄 - 貢獻 - 測試您的更改
Facebook Open Source React Native |
測試您的更改
本文檔是關於測試您對React Native的更改作為貢獻者。如果您對測試React Native應用程序感興趣,請查看Jest網站上的React Native Tutorial。
React Native repo有幾個測試,你可以運行以驗證你沒有引起PR的回歸。這些測試使用Circle,一個持續集成系統運行。 Circle將使用測試結果自動註釋拉取請求。
無論何時修復錯誤或向React Native添加新功能,都應添加覆蓋它的測試。根據您所做的更改,可能會有不同類型的測試。
React Native repo有幾個測試,你可以運行以驗證你沒有引起PR的回歸。這些測試使用Circle,一個持續集成系統運行。 Circle將使用測試結果自動註釋拉取請求。
無論何時修復錯誤或向React Native添加新功能,都應添加覆蓋它的測試。根據您所做的更改,可能會有不同類型的測試。
JavaScript
Jest
Jest測試是在帶有節點的命令行上運行的僅JavaScript測試。您可以使用以下命令運行現有的React Native jest測試:
$ cd react-native
$ npm test
當您處理僅修改JavaScript代碼的更改時,最好添加Jest測試。
測試本身位於他們測試的文件的__tests__目錄中。有關基本示例,請參閱
測試本身位於他們測試的文件的__tests__目錄中。有關基本示例,請參閱
TouchableHighlight-test.js
Flow
您還應確保您的代碼通過Flow測試。這些可以使用:
$ cd react-native
$ npm run flow
Android
單元測試
Android單元測試不在模擬器中運行。他們只使用普通的Java安裝。默認的macOS Java安裝不足,您可能需要安裝Java 8(JDK8)。您可以在終端中鍵入javac -version以查看您擁有的版本:
$ javac -version
javac 1.8.0_111
The version string
1.8.x_xxx
corresponds to JDK 8.
您還需要安裝 Buck build tool.
要運行Android單元測試:
$ cd react-native
$ ./scripts/run-android-local-unit-tests.sh
每當您處理可由Java代碼單獨測試的代碼時,最好添加Android單元測試。 Android單元在ReactAndroid / src / tests下進行實時測試,因此您可以瀏覽該目錄以獲得測試的良好示例。
集成測試
要運行集成測試,您需要安裝Android NDK。請參閱 Prerequisites.
您還需要安裝 Buck build tool.
我們建議您在模擬器中運行Android集成測試,但您也可以使用真正的Android設備。保持模擬器以可見窗口運行是個好主意。這樣,如果您的測試停止,您可以查看模擬器進行調試。
某些設備和某些仿真器配置可能無法與測試一起使用。我們確實維護了一個可用的模擬器配置,作為測試的標準。要運行此模擬器配置:
某些設備和某些仿真器配置可能無法與測試一起使用。我們確實維護了一個可用的模擬器配置,作為測試的標準。要運行此模擬器配置:
$ cd react-native
$ ./scripts/run-android-emulator.sh
運行模擬器後,運行集成測試:
$ cd react-native
$ ./scripts/run-android-local-integration-tests.sh
集成測試只需幾分鐘即可在現代開發人員計算機上運行。
每當您處理需要同時測試JavaScript和Java的代碼時,最好添加Android集成測試。 Android集成測試存在於ReactAndroid / src / androidTest下,因此您可以瀏覽該目錄以獲取測試的良好示例。
每當您處理需要同時測試JavaScript和Java的代碼時,最好添加Android集成測試。 Android集成測試存在於ReactAndroid / src / androidTest下,因此您可以瀏覽該目錄以獲取測試的良好示例。
iOS
集成測試
React Native提供了一些工具,可以更輕鬆地測試需要本機和JS組件通過網橋進行通信的集成組件。兩個主要組件是RCTTestRunner和RCTTestModule。 RCTTestRunner設置ReactNative環境並提供在Xcode中作為XCTestCases運行測試的工具(runTest:module是最簡單的方法)。 RCTTestModule作為NativeModules.TestModule導出到JS。
測試本身是用JS編寫的,完成後必須調用TestModule.markTestCompleted(),否則測試會超時並失敗。測試失敗主要通過拋出JS異常來表示。也可以使用runTest測試錯誤條件:module:initialProps:expectErrorRegex:或runTest:module:initialProps:expectErrorBlock:它將導致拋出錯誤並驗證錯誤是否與提供的條件匹配。
有關使用和集成點的示例,請參閱以下內容:
測試本身是用JS編寫的,完成後必須調用TestModule.markTestCompleted(),否則測試會超時並失敗。測試失敗主要通過拋出JS異常來表示。也可以使用runTest測試錯誤條件:module:initialProps:expectErrorRegex:或runTest:module:initialProps:expectErrorBlock:它將導致拋出錯誤並驗證錯誤是否與提供的條件匹配。
有關使用和集成點的示例,請參閱以下內容:
您可以在IntegrationTest中使用cmd + U本地運行集成測試,在Xcode中運行RNTester應用程序,或者在macOS上的命令行中運行以下命令:
$ cd react-native
$ ./scripts/objc-test-ios.sh
您的Xcode安裝將附帶運行最新操作系統的各種模擬器。您可能需要手動創建一個新的Simulator以匹配測試腳本中的XCODE_DESTINATION參數。
截圖/快照測試
常見的集成測試類型是快照測試。這些測試使用TestModule.verifySnapshot()在後台使用FBSnapshotTestCase庫呈現組件並驗證屏幕快照與參考圖像的對比。通過在RCTTestRunner上設置recordMode = YES,然後運行測試來記錄參考圖像。快照在32位和64位以及各種操作系統版本之間略有不同,因此建議您使用正確的配置運行測試。還強烈建議將所有網絡數據與其他潛在麻煩的依賴項一起模擬出來。有關基本示例,請參閱SimpleSnapshotTest。
如果進行影響PR中快照測試的更改,例如向其中一個快照示例添加新示例案例,則需要重新記錄快照參考圖像。為此,只需更改為_runner.recordMode = YES;在RNTester / RNTesterSnapshotTests.m中,重新運行失敗的測試,然後將記錄翻轉回NO並提交/更新您的PR並等待Circle構建是否通過。
如果進行影響PR中快照測試的更改,例如向其中一個快照示例添加新示例案例,則需要重新記錄快照參考圖像。為此,只需更改為_runner.recordMode = YES;在RNTester / RNTesterSnapshotTests.m中,重新運行失敗的測試,然後將記錄翻轉回NO並提交/更新您的PR並等待Circle構建是否通過。
Apple TV
上面針對iOS討論的相同測試也將在tvOS上運行。在RNTester Xcode項目中,選擇RNTester-tvOS目標,您可以按照上述相同步驟在Xcode中運行測試。
您可以通過在macOS上的命令行中運行以下命令來在本地運行Apple TV單元和集成測試:
您可以通過在macOS上的命令行中運行以下命令來在本地運行Apple TV單元和集成測試:
$ cd react-native
$ ./scripts/objc-test-tvos.sh (make sure the line `TEST="test"` is uncommented)
端到端測試
最後,通過執行以下腳本確保端到端測試成功運行:
$ cd react-native
$ ./scripts/test-manual-e2e.sh
更新文檔
如果您要添加新功能或引入行為更改,我們會要求您更新文檔以反映您的更改。這些文檔作為React Native網站的一部分進行託管。該網站本身託管在GitHub頁面上,並自動從Markdown源生成。
要更新文檔,您需要克隆facebook / react-native-website存儲庫,在docs /目錄中進行更改,然後發送pull請求。對於單個文件的輕量級更改,您還可以單擊網站上任何文檔頂部的“編輯”。
要更新文檔,您需要克隆facebook / react-native-website存儲庫,在docs /目錄中進行更改,然後發送pull請求。對於單個文件的輕量級更改,您還可以單擊網站上任何文檔頂部的“編輯”。
0 意見