Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?

More than 1 year has passed since last update.

@nishikawa-shi

【Xcode】暦法を指定したユニットテスト

概要

暦法付きロケールIDを引数 AppleLocale に設定すると暦法指定のテストができます。Test Plansと組み合わせると便利です。

xctestplanファイルの用意

Test Plans未導入の場合は、Product -> Scheme -> Edit Scheme 画面TestタブのConvert to use Test Plans からxctestplanファイルを生成してください。ファイルの Configurations タブを開くと、様々な設定項目があることを確認できます。
スクリーンショット 2020-05-06 午後6.43.52.png
これらの中でも地域設定には Localization -> Application Region を使用すれば良さそうですが、Xcode11現在、暦法すなわちCalendarを指定する仕組みはありません。
そこで、 Arguments Passed On Launch から地域を直接指定します。

指定する引数の用意

地域の設定には、引数 AppleLocale を利用します。( 参考: Testing Your Internationalized App )
引数には、カレンダー指定込みロケールIDを渡します。下記は和暦指定の例です。カレンダーIDは、Calendar.Identifier の値を参考にすると良さそうです。

-AppleLocale ja_JP@calendar=japanese 

また、この指定を有効にするため、 Localization -> Application RegionSystem Region とします。
以上を反映させた画面が下記です。
スクリーンショット 2020-05-06 午後7.22.31.png

値の詳細

この値は、下記処理の出力を元に作成しました。

print(Locale.current)

# 和暦設定時
# ja_JP@calendar=japanese (current)

# 西暦設定時
# ja_JP (current)

実行

Cmd + U等から通常実行します。すると、指定した暦法の元ユニットテストが行われます。

参考

Test plansの詳細な使い方は、下記を参考にさせていただきました。

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
1
Help us understand the problem. What is going on with this article?