問題タブ [gh-unit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
unit-testing - GH-UnitおよびObjectiveC++
GHUnitを使用して単体テストを実行するiPhoneプロジェクトがあります。最近、FFTの計算を容易にするために、複素数を実装し、一部の演算子をオーバーロードする必要がありました。ここでの目標は、FFTWなどのライブラリが使用する可能性のあるすべての機能のオーバーヘッドなしでFFTを実行するクリーンな方法を作成することでした。この意味で、FFTで実行する計算の数をさらにカスタマイズできました(したがって、これまたは従来のDFTで使用されているものを因数分解する複雑さを軽減します)。
つまり、FFTWを使用するのではなく、独自のFFTライブラリをC++で実装することにしたのはこのためです。ただし、これによりGHUnitでいくつかの問題が発生しました。私のすべての本番ターゲットは、FFTライブラリの統合で正しく機能しますが、GHUnitは機能しません。具体的には、GHComposeStringなどでリンカーエラーが発生します。これは、ユニットテストターゲットでのみ発生します。この問題は何でしょうか?最初は、これは関数名のマングル方法がCとC ++で異なるためだと思いましたが、プロジェクトの残りの部分には影響せず、GHUnitの部分だけに影響するようです。
C++とGHUnitの混合に関するサポートをいただければ幸いです。
iphone - GH ユニットと「未定義シンボル」エラー
単体テストにはGH-Unitを使用しています。指示に従って設定しましたが、次の行で「未定義のシンボル」エラーが発生します。
ターゲットに追加ChecklistAppDelegate
するとTests
、未定義のシンボル エラーはなくなりますが、AppDelegate の Core Data クラスの宣言ごとに 1 つずつ、37 以上のエラーが発生します (たくさんあります)。それらのほとんどは、expected specifier-qualifier-list before 'NSPersistentStoreCoordinator'
ターゲットを Core Data フレームワークにリンクすることでこれを解決できるのではないかと考えましTests
たが、うまくいきませんでした。AppDelegate ファイルも試し#import <CoreData/CoreData.h>
ましたが、うまくいきませんでした。
何か案は?GH-Unit の痕跡をすべて削除して、数回追加し直しましたが、まだ機能していません。
ビルド結果のエラーは次のとおりです
objective-c - Objective-C コードの単体テスト用の GH-Unit でリンク エラーが発生するのはなぜですか?
私は、Xcode を使用した単体テストの非常に率直に恐ろしい世界に飛び込もうとしています (そのような複雑なプロセスのようです)。
基本的に、このテスト クラスがあり、Show.h クラスをテストしようとしています。
ただし、テストをビルドして実行しようとすると、次のエラーが表示されます: -
未定義のシンボル:
「_OBJC_CLASS_$_Show」、次から参照:
ld: シンボルが見つかりません
collect2: ld が 1 つの終了ステータスを返しました
これはリンクエラーだと思います。ここにある指示のすべてのステップに従ってみました: -
http://github.com/gabriel/gh-unit/blob/master/README.md
そして、これらの指示のステップ2は私を混乱させました: -
[ターゲット 'テスト' 情報] ウィンドウの [全般] タブで、次の操作を行います。
リンクされたライブラリを追加し、Mac OS X 10.5 SDK セクションで GHUnit.framework を選択します。
リンクされたライブラリを追加し、プロジェクトを選択します。
直接の依存関係を追加し、プロジェクトを選択します。(これにより、アプリケーションまたはフレームワークがテスト ターゲットの前にビルドされます。)
すべてのプロジェクトが .dylib、.framework、および .o ファイルを受け入れる場合、プロジェクトをリンクされたライブラリ リストに追加するにはどうすればよいですか?
objective-c - 組み込みフレームワークの OCUnit テスト
更新: あきらめて、代わりに GHUnit をプロジェクトに追加しました。ほんの数分で GHUnit を起動して実行することができました。
更新: ここから Xcode プロジェクトをダウンロードできます: http://github.com/d11wtq/Cioccolata
Unit Test ターゲットを Xcode プロジェクトに追加しましたが、ビルド時にフレームワークが見つかりません。
Test.octest could not be loaded because a link error occurred. It is likely that dyld cannot locate a framework framework or library that the the test bundle was linked against, possibly because the framework or library had an incorrect install path at link time.
私のフレームワーク (メイン プロジェクト ターゲット) は、組み込み用に設計されているため、インストール パスは@executable_path/../Frameworks
.
フレームワークをテスト ターゲットの直接の依存関係としてマークし、「バイナリとライブラリのリンク」ビルド フェーズに追加しました。
さらに、フレームワークを単体テスト バンドルの Frameworks ディレクトリに単純にコピーする「ファイルのコピー」の最初のステップ (依存関係を構築した後) を追加しました。
誰でもこれについて経験がありますか?何を見逃したのかわかりません。
編集 | フレームワークは実行可能ではないため、そうすべきではないと確信していますが、「テスト ホスト」と「バンドル ローダー」を設定していません。テストバンドルはフレームワークに対してリンクされており、他のバンドルと同じようにロードされるため、これは(私の理解では)すべて問題ありません。
編集 | 私はほとんどそこにいると思います。@executable_path の代わりに @rpath の使用を指示する次の記事を読みました。
http://www.dribin.org/dave/blog/archives/2009/11/15/rpath/
この場合、OCUnit テスト バンドルは実行可能ファイルではなく、単純な古いバンドルであるため、@executable_path は互換性がないため、完全に理にかなっています。これで、フレームワークのインストール ディレクトリが に設定され@rpath
、テスト ターゲットのランタイム検索パス (rpath) がビルド ディレクトリとして定義されました。これにより、フレームワークをテスト バンドルにコピーする必要がなくなり、結果として得られるフレームワークはどこにでも配置できるため、全体的にはるかに柔軟になります。
ここで、Test ターゲットに Bundle Loader を設定する必要があることにも気付きました。これは、フレームワーク バイナリのパスに設定されています。
テスト ターゲットをビルドし、エラーなしでフレームワークからクラスを #import できます。しかし、フレームワークからクラスをインスタンス化しようとするとすぐに、次のエラーが発生します。
/Developer/Tools/RunPlatformUnitTests.include:412: note: Started tests for architectures 'i386'
/Developer/Tools/RunPlatformUnitTests.include:419: note: Running tests for architecture 'i386' (GC OFF)
objc[50676]: GC: forcing GC OFF because OBJC_DISABLE_GC is set
Test Suite '/Users/chris/Projects/Mac/Cioccolata/build/Debug/Test.octest(Tests)' started at 2010-05-21 12:53:00 +1000
Test Suite 'CTRequestTest' started at 2010-05-21 12:53:00 +1000
Test Case '-[CTRequestTest testNothing]' started.
/Developer/Tools/RunPlatformUnitTests.include: line 415: 50676 Bus error "${THIN_TEST_RIG}" "${OTHER_TEST_FLAGS}" "${TEST_BUNDLE_PATH}"
/Developer/Tools/RunPlatformUnitTests.include:451: error: Test rig '/Developer/Tools/otest' exited abnormally with code 138 (it may have crashed).
Command /bin/sh failed with exit code 1
私のテスト メソッドは、このセットアップのデバッグに役立つように作成した HelloWorld クラスを割り当ててから解放するだけです。
これらのコード行を に置き換えるとSTAssertTrue(YES, @"Testing nothing");
、クラスがまだインポートされているにもかかわらず、エラーはなくなります。
objective-c - GHUnitIOS ビルド エラー
iOS プロジェクトで gh-unit を動作させようとしていますが、奇妙なビルド エラーが発生します。4.2 iOS SDK と XCode 3.2.5 を使用しています。
私はこのチュートリアルに従いました:
http://4arrowsmedia.com/2010/09/ghunit-setup/
そして、最初のコメントの男と同じビルドエラーが発生しています。
興味深いことに、.pch ファイルを使用している場合にのみこのエラーが発生します。使用しなければ、すべて正常に動作します。プロジェクト全体で使用する多数のヘッダー ファイルがあり、すべてのファイルに含めたくないため、.pch ファイルを使用したいと考えています。
objective-c - 実行ボタンをタップせずにGHUnitテストを開始するには?
スタティック ライブラリのテストには GHUnit フレームワークを使用します。この時点で、Run ボタンをタップしてテストを開始する必要があります。しかし、teamcity が testApp を起動する必要があるため、アプリケーションの起動時にテストを開始したいと思います。では、標準 UI を変更してテストを自動で開始するにはどうすればよいでしょうか?
unit-testing - GHUnitフレームワークでのJUnitXml形式
GHUnitを使用したテストの結果としてxmlレポートを作成する方法を知っている人はいますか?
私はそれが好きですが、.xmlファイルが表示されませんでした...
GHUNIT_AUTORUN = 1 WRITE_JUNIT_XML = YES xcodebuild -project Tests.xcodeproj -sdk iphonesimulator4.3 -target Tests
xcodebuild - GHUnit CLI ビルド: Availability.h エラー
Xcode 内で正常にビルドされる GHUnit ターゲットのコマンド ライン ビルドを実行しようとしています。次のコマンドを実行してビルドしています。
GHUNIT_CLI=1 xcodebuild -target BasicBrowserUnitTest -configuration デバッグ -sdk iphonesimulator4.0 ビルド
SDKヘッダーであるAvailability.hにエラーが見つかるまでは、かなりうまくやっています。
/Xcode4 GM/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.0.sdk/usr/include/AvailabilityInternal.h:56:42: エラー: 演算子 '<' に左オペランドがありません
明らかに、私は Apple のものに変更を加えていません。なぜこのエラーが発生するのですか?どうすれば修正できますか?
iphone - iPhone での GHUnit コード カバレッジ
私は最近、iPhone 用の GHUnit を使用して単体テストを作成する方法を学んでいます。ただし、xCode 4 を使用してコード カバレッジを設定する方法がわかりません。
googletubes は (どういうわけか) この問題で特に役に立ちませんでした。