前提
Extensionをまとめたファイルについて、Unitテストを書いていたのですが、そのうち一つのメソッドに対するテストでこれが出て対処法を見つけるまで結構時間奪われたので残します。
問題
ユニットテストを実行時に、Ambiguous use of xxxx
というエラーが一部のメソッドに出てテストが失敗する。
修正方法
各クラスについて、右のパネル内にある Target Membership
から Testsのチェックマークを外す!これだけ!
- AppName
- AppNameTest -> これ!
- AppNameUITest
原因
Unitテストをする際は、下記を記載してテストクラスへアプリターゲットの参照を追加するのが一般的だと思います。
@testable import AppName
しかし、各クラスの Target Membership
にチェックマークを入れてしまうと、上記とは別に個別の参照が作成されてしまうようです。
今回Extensionのテストということもあり、メソッド名が重複してしまい当該のエラーが出たということだと推測できます。
これデフォルトではチェックついてないのですが、テスト対象クラスだからチェックつけない!って勝手に勘違いしてましたことが原因でした。自戒です。