2016-04-23 9 views
0

私はユニットテストが定義されているObj-Cで書かれたiOSアプリケーションを持っています。今、私はObj-Cクラス(O)で迅速なクラス(S)を使用している新しい機能を追加しています。メインターゲットとテストターゲットの両方にブリッジヘッダーが配置されています。この点まで、すべてが本当にうまく機能します。SwiftとObj-cユニットテスト中の相互運用性の問題

ここに問題があります。 クラスOのユニットテストクラス(U)をswiftで作成して実行すると、ブリッジヘッダーが見つからないという問題が発生します。私はこれを仮定しています。なぜなら、OはSを使用しており、これらの詳細はブリッジヘッダーファイルに入っていて、再びUのSとOの両方を使用しようとしています。私はSを使用しない他のObj-Cクラスを追加すると、それは完全に正常に動作します。

ここで私はすでに何をしているのかを確認しています。 Ohのファイルが-Swift.hのインポートステートメントの保持をサポートしていないことを知っているので、私はクラスSのためにああで前方宣言をします。 Omファイル。

このシナリオはサポートされていますか?

Class O uses Class S. 
Class U can test class O by using class S. 

Note: O->Objective-C 
     S->Swift Class 
     U->Unit test class in swift. 
+0

'両方の主要ターゲットユニットテストのブリッジヘッダーの中にメインアプリケーションのブリッジヘッダをインポートしているテストターゲットの場合は、どうでしょうか?もしそうなら、これを質問の詳細に追加してください。 –

+0

IIRCでは、単体テストをテストするクラスと同じ言語で記述することをお勧めします。この場合、Objective-Cで単体テストを書くのはObjective-Cであるからです。つまり、Swiftクラスを使用することは重要ではありません。 –

+0

しかし、あなたは実際に何の問題を抱えていますか?それとも、なぜそれがサポートされていないと思われますか? –

答えて

0

答えは簡単ですが、それほど明確ではありませんでした。私は、インポート・ステートメントを使用順にブリッジ・ヘッダー・ファイルに配置する必要がありました。たとえば、一方のクラスが他方のクラスに依存している場合は、依存関係のimport文を最初に配置し、次に呼び出し側のクラスのファイルをブリッジヘッダに配置することが重要です。