6
2

More than 1 year has passed since last update.

【iOS】Bitriseを導入してテストをBitrise上で行う

Last updated at Posted at 2022-01-03

はじめに

Bitriseの導入で手こずったので、備忘録です。

環境

Xcode: 13.2.1
macOS: M1 Monterey 12.1 Beta
iOS: 15.0
CocoaPods: 1.10.2

プロジェクト作成

プロジェクトネームはここではこんな感じでつけときます。
Include Testsにチェックをつけてテストファイルを追加します。

ScreenShot 2022-01-03 15.54.51.png

テストコードを書く

次のようなコードをBitrise_SampleTestsに書きます。

class Bitrise_SampleTests: XCTestCase {

    func testAdd() {
        var age = 21
        age += 1
        XCTAssertEqual(age, 22)
    }
...
}

⌘+Uでテストが成功することを確認しましょう。

え?成功しない?
それな。
ScreenShot 2022-01-03 16.07.41.png
ScreenShot 2022-01-03 16.23.56.png

僕の場合はUIテストのこの二つのメソッドが失敗します。今回の趣旨とは、ずれてしまうので、一旦ここはこれらのメソッドをコメントアウトして先に進むことにしよう。

テストが成功したら次に進みます。

CocoaPodsでライブラリ管理

ライブラリ管理はやらなくてもBitriseを使えるのですが、ほとんどのプロジェクトでは何かしらのライブラリ管理をしていると思うので、今回も使います。
(というか、ライブラリを導入したときのBitrise上のエラーに苦戦したのでこの記事を書いてます。)

プロジェクトを閉じてCocoaPodsを使ってライブラリを管理します。
先ほど作ったプロジェクトのフォルダに移動します。
Podfileを以下のコマンドで作成します。

% pod init

以下のようにPodfileを編集しておきます。
今回は例としてRealmを使います。(他のでも大丈夫)

# Uncomment the next line to define a global platform for your project
platform :ios, '15.0'

target 'Bitrise-Sample' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!

  # Pods for Bitrise-Sample

  pod 'RealmSwift'

  target 'Bitrise-SampleTests' do
    inherit! :search_paths
    # Pods for testing
  end

  target 'Bitrise-SampleUITests' do
    # Pods for testing
  end

end

ライブラリをインストールします。

% pod install

以降はxcworkspaceを使います。

ViewControllerでRealmを読み込んでビルドしてエラーが出ないか確認しておきましょう。
ScreenShot 2022-01-03 16.35.24.png

Bitriseのセットアップ

まだBitriseアカウントをお持ちでない方はこちらからBitriseのアカウントを作成してください。

次のDashboradのこちらのAdd new appで先ほど作ったプロジェクトをBitriseと紐付けます。
WebUIを選択します。

ScreenShot 2022-01-03 16.39.10.png

今回はPrivateにしておきます。

ScreenShot 2022-01-03 16.40.20.png

先ほど作ったプロジェクトのGitHubリポジトリを選択します。

ScreenShot 2022-01-03 16.41.13.png

SSH keyを作成しておきましょう。

branchはmasterにしておきます。

ScreenShot 2022-01-03 16.42.59.png

Configuration completeが終わったら次はProject build configurationの設定をします。

Distribution methodはdevelopmentにし、stackはmacOSと同じものにしてNext->Confirmとします。

ScreenShot 2022-01-03 16.45.38.png

App iconはSkip for Nowにしておきます。

ScreenShot 2022-01-03 16.46.24.png

Webhook setupはRegisterの方にしておきましょう。

ScreenShot 2022-01-03 16.46.56.png

一番下のボタンを押したらビルドが走ります。少し待ちましょう。

しかし、失敗してしまいます。
理由は、Bitrise上でCocoaPodsをインストールできていないためです。

Workflow Editorに移動します。

ScreenShot 2022-01-03 16.50.25.png

こちらのXcode Test for iOSのプラスボタンを押します。

ScreenShot 2022-01-03 16.51.23.png

cocoapodsと検索するとRun CocoaPods installと出てくるので、こちらを選択します。

ScreenShot 2022-01-03 16.53.20.png

Workflowsに追加されました。上からこの順序でBitrise上で実行されるので、このWorkflowを追加する必要がありました。
(Carthageを使った場合はCarthageと検索して出てくるものをWorkflowsに追加してください)

ScreenShot 2022-01-03 16.54.36.png

⌘+Sで保存します。

bitrise.ymlに移動します。

ScreenShot 2022-01-03 16.56.13.png

BITRISE_PROJECT_PATHが<プロジェクト名>.xcodeprojになっている場合は、<プロジェクト名>.xcworkspaceにします。

ScreenShot 2022-01-03 16.57.14.png

これでセットアップは終わりです。

適当にコードを追加して差分を作ります。

ScreenShot 2022-01-03 17.02.17.png

コミットしてプッシュしましょう。
プッシュするとそれがトリガーになってBitriseのWorkflowsが走ります。

Runningになっているのでこちらを選択してみてみましょう。

ScreenShot 2022-01-03 17.04.42.png

走っていますね。

ScreenShot 2022-01-03 17.06.25.png

Successしました。

ScreenShot 2022-01-03 17.15.02.png

しかし、10分近く経ってしまいました。
これは見ての通りxcode-test@4がかなりの時間かかっているからで、特にUIテストに時間がかかっています。なので、次に単体テストのみ実行する方法を紹介します。

ScreenShot 2022-01-03 17.15.49.png

単体テストのみ実行する

UIテストは重たいので単体テストのみ実行したいこともあると思います。その手順も紹介します。

Edit Schemeを選択します。

ScreenShot 2022-01-03 17.19.15.png

Testを選択し、Bitrise-SampleUITestsのEnabledのチェックを外します。

ScreenShot 2022-01-03 17.19.44.png

ScreenShot 2022-01-03 17.33.05.png

コミットしてプッシュします。

ちょっとだけ早くなりました。

ScreenShot 2022-01-03 17.41.57.png

単体テストをあえて失敗させてみる

テストが通らない場合はどうなるのかも確認しておきましょう。

あえて失敗するコードを書いてみます。

ScreenShot 2022-01-03 17.43.42.png

コミットしてプッシュします。

よかった、失敗してくれました。

ScreenShot 2022-01-03 17.54.57.png

おわりに

Bitriseしか勝たん

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2