web-dev-qa-db-ja.com

Xcode 6 Editorは単体テストを認識しません

Xcode IDE 6は私のSwift=ユニットテストケースを正しく検出しません。ユニットテストを実行すると、すべてのテストが実行されました。

しかし、IDEでは、単体テストの編集は認識されません。単一のテストを実行するには、単体テストスイート全体を実行する必要があります。

このグリッチをどのように回避するかわかりませんでした。

enter image description here

51
ChaosSpeeder

問題は解決しました。私がしなければならないことは、「ウィンドウ->プロジェクト」ウィンドウを起動し、「派生データを削除することです。インデックス作成後、すべてのテストが機能します。

その間AppleはXcode 6.3エディターのバグを少しずつ修正しています。

56
ChaosSpeeder

私にとっての修正は、すべてのメソッドの前に「test」を付けることでした

つまり.

func arrayResponseCall() 

する必要があります:

func testArrayResponseCall()
21
Antoine

私にとっての「修正」は、新しいテストを追加することでした。私はいくつかのナンセンスを作りました:

func testThatNothing() {
    XCTAssertTrue(true, "True should be true")
}

テストを再度実行すると、そのファイル内のすべてのテストがエディターによって認識されました。偽のテストを削除しましたが、すべて問題ありません。残念ながら、各ファイルでこれを行う必要がありましたが、少なくとも機能します。これが誰かを助けることを願っています。

13
Reid

以下は、この問題のいくつかの解決策です。

  1. しばらくお待ちください。時々ダイヤモンドをロードするのに時間がかかります。 異なるファイル間を移動してから、同じテストケースに移動します

  2. プロジェクトのクリーン、ビルドフォルダのクリーン、さらには派生データコンテンツの削除チェックthis 派生データを安全に削除する方法

  3. Xcodeを終了し、もう一度開きます。

  4. テストケース名がtestFunc_Nameで始まることを確認してください

  5. テストケースファイルには、テストケース以外の機能が含まれている場合があります。このようなシナリオでは、ダイアモンド記号は表示されません。 Remove such function.

私の場合、1、3、および5のソリューションがよく機能しました。

8

私も同じ問題を抱えていました。各テストケースに何らかのXCTAssert()ステートメントがあることを確認してください。

func testSomething(){
     XCTAssert(true, "Pass")
}
6
Ernest Han

(1週間経ってもまだこの問題が発生しているというコメントがあるため、これは役に立たないかもしれませんが...)

6.1で新しい(Swift)テストを追加しても「テストナビゲータ」またはスキームエディタに表示されないこの問題に遭遇しました-Xcodeを再起動すると問題が修正され、テストを個別に実行できるようになりました。

3
Sophie Alpert

テストケース名が「test」で始まり、その後に任意の名前が続くことを確認し、プロジェクトをビルド(cmd + B)します。ダイヤモンドが表示されます!!。

3
Akila Wasala

Xcode 7

私の完全な答えは こちら です。

Xcode 7では、単体テストの設定はXcode 6よりも簡単です(クラスとメソッドにpublicとして注釈を付ける必要はありません)。使用する @testableクラス名のインポート前。

import XCTest
@testable import MyProject

class MyClassTests: XCTestCase {

    func testMyMethod() {

        let myClass = MyClass()
        let sum = myClass.addTwoNumbers(1, 2)

        XCTAssertEqual(sum, 3)
    }
}

クラスでは特別なことをする必要はありません。

class MyClass {

    func addTwoNumbers(a: Int, b: Int) -> Int {
        return a + b
    }
}

アプリのビルド設定の[パッケージ化]で[モジュールの定義]を[はい]に設定する必要がある場合もあります。

これらの回答も参照してください。

3
Suragch

私にとっては、ここにテストを追加する必要があります enter image description here

3
Stephen Chen

同様のエラーがありました(Swiftではなく、Objective Cで)。クラスに新しいテストメソッドを追加した場合、新しいメソッドはテストナビゲーターに表示されず、バンドル全体を実行しても実行されません。また、クリックすると1つのテストメソッドのみを実行する各メソッドの横のサイドバーにこれらのドットは表示されません。

私の問題を解決した唯一のことは、テストクラス全体を削除し(内容を一時的に別の場所に保存)、テストクラスを再作成し、(おそらくもっと慎重に?)ビルド設定をもう一度設定することでした。

2
Olivia Stork

私にとっては、Product->Testを選択して少し待つだけで十分でした。テストの実行が開始されると、すべてのダイヤモンドが利用可能になります

1

新しいテストを追加するとき、ファイルを保存し(Cmd + S)、ひし形が表示されます(Xcode 7.3で検証済み)

1
Mike Taverne

必要なのは、Xcodeがすべてのファイルのインデックス作成を完了するのを待つことだけです。大規模なプロジェクトの場合、ユニットテストナビゲータービューは、完了するまで空であることがよくあります。

1
Ari Braginsky

privateメソッドをpublicに変えるだけで問題を解決しました。

したがって、これがあなたが直面しているのと同じ問題である場合、切り替えます:

private func testString()

に:

public func testString()
0
Alcivanio

ここに私のために働いたものがあります。単体テストでは使用可能なテストが0であると表示されていますが、[再生]をクリックすると、4つのテストすべてが実行されて表示されました。

enter image description here

0
ScottyBlades