簡體   English   中英

從命令行為 iOS 應用程序運行單個 XCTest(UI、單元)測試用例

[英]Running individual XCTest (UI, Unit) test cases for iOS apps from the command line

是否可以從命令行界面從 iOS 應用程序測試目標而不是所有測試用例運行單個測試用例或單個測試套件?

您可以使用xcodebuild從命令行運行測試,開箱即用。 當您這樣做時,您將運行您選擇的測試目標中包含的所有測試用例。

您也可以使用 Fastlane 的掃描來執行此操作,但我相信您只能運行 select(如上)的構建方案的所有測試,因此它與 xcodebuild 沒有什么不同。

您可以使用來自 Facebook 的xctool運行特定測試,但它不使用 xcodebuild,並且僅限於在模擬器上運行,而不是在實際的 iOS 測試設備上運行。

我找到了直接運行xctest命令行實用程序的參考,但它似乎是一個未記錄的功能並且以 DerivedData 為目標。 由於 UI 測試將其 *xctest 文件放在單獨的 XCTRunner 包中,這使情況變得復雜。

現在可以在 Xcode 8 中使用xcodebuild-only-testing參數:

xcodebuild test -workspace <path>
                -scheme <name>
                -destination <specifier>
                -only-testing:TestBundle/TestSuite/TestCase

在此處輸入圖片說明

您可以編輯方案以僅運行特定測試。 選擇方案,然后編輯方案。 在出現的窗口中,選擇測試階段並禁用/啟用單個測試。

在此處輸入圖片說明

您還可以添加方案來運行測試的子集。 從命令行運行測試時,您可以指定用於測試的方案(至少在 fastlane 中)。

運行單獨的測試

要運行單個測試用例,您可以使用-only-testing

-only-testing模式

-only-testing:<target>/<class_name>/<test_name>

xcodebuild模式

xcodebuild test 
-workspace "<name>.xcworkspace"  
-scheme "<name>" 
-destination '<options>' 
-only-testing "<test_case>"

例子

//for example(several test cases)
xcodebuild test 
-workspace "MyApp.xcworkspace"
-scheme "MyAppTest" 
-destination 'platform=iOS Simulator,name=iPhone 11 Pro Max,OS=13.5' 
-only-testing "MyAppTest/TestClass/foo"
-only-testing "MyAppTest/TestClass/foo2"

例如,如果Test Navigator看起來像

參數將具有以下類型

-only-testing:F49088168M_OBDIITests/HexUtilityTests/testHexToBinStringFormat

如果你想添加一個額外的測試用例,你可以再添加一個-only-testing

您也可以使用以下-skip-testing跳過測試: -skip-testing

您可以在Derived Data找到測試結果[關於]

<derived_data>/<project_name>-dzqvyqfphypgrrdauxiyuhxkfxmg/Logs/Test/Test-<target_name>-<date>.xcresult

[Xcode截圖]

我和你的情況類似,並且已經構建了一個 python 腳本來觸發我想要的一組測試用例。 它的過程有點復雜,但對我有用,並且隨着時間的推移在實現 DataProvider 方法、重新運行失敗的測試用例和我需要的其他自定義方面非常有用。

您想要實現的一些相關步驟。

  1. 覆蓋 XCTestCase 中存在的 testInvocations 方法以執行以下步驟
    • 在這種方法中,我讀取了環境變量 XXXX。
    • 這個環境變量基本上是一個逗號分隔的測試用例方法名稱。
    • 現在為要觸發的每個測試方法創建 NSInvocations。
    • 返回調用數組。
  2. 如何傳遞環境變量?
    • 在方案中添加一個名為 XXXX 的環境變量。
    • Scheme文件是標准的xml文件,編寫腳本修改scheme文件,使其在環境變量中包含逗號分隔的值。

如果您需要更多信息,請添加評論,我會回復。

要運行單個測試或測試類,您可以單擊裝訂線中它旁邊的菱形。 如果您打開它們,它就在行號出現的位置旁邊。

在此屏幕截圖中,我的鼠標懸停在鑽石上方。 注意它是如何變成一個小播放箭頭的,表示它將被運行。

懸停在測試鑽石上

然后,您可以使用⌃⌥⌘ G重新執行最近運行的測試。

據我所知,這不能通過xcodebuild完成。

可能這有幫助。 我很無知,因為我不知道您可以通過右鍵單擊測試導航器中的某些特定測試來禁用它們。

然后像往常一樣運行xcodebuild test -scheme <name> ,所有禁用的測試都將被忽略。 為我與 Fastlane 合作。

Xcode 測試導航器

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM