2011-01-12 14 views
15

アプリケーションテスト(デバイス上)を実行しているときにOCUnitテストスイートに問題が発生しています。時々、OCUnitクラスからスローされるような厄介なエラーが発生します。私は、テストスイートに追加されたファイルを調べようとしていましたが、その周りに頭を浮かべることはできません。デバイスでOCUnitアプリケーションテストスイートを実行する際に時折エラーが発生する

私はアップル社のマニュアルを参照して、その後、私のテスト目標を設定する際、次のターゲット(とインデントの依存関係)で、その結果、他のチュートリアルを見てきました:

LogicTests

のMyApp LogicTests

をApplicationTests MyApp

MyAppTesting ApplicationTests

最後(MyAppTesting)は、テストスイートを開始するためにデバイスで実行したものです。

と述べたように、テストはコンソールで私に次のような出力を投げ、時には起動に失敗

2010-11-17 12:02:48.537 VCCTesting[12018:307] *** Assertion failure in -[SenTestClassEnumerator init], /SourceCache/OCUnit/OCUnit-1685/SourceCode/SenTestingKit/SenTestClassEnumerator.m:137 

2010-11-17 12:02:48.556 VCCTesting[12018:307] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'objc_getClassList returned more classes than it should have.' 
*** Call stack at first throw: 
(
0 CoreFoundation      0x30897ed3 __exceptionPreprocess + 114 
1 libobjc.A.dylib      0x3002f811 objc_exception_throw + 24 
2 CoreFoundation      0x30897d15 +[NSException raise:format:arguments:] + 68 
3 Foundation       0x349f932f -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 62 
4 SenTestingKit      0x20107c29 -[SenTestClassEnumerator init] + 292 
5 SenTestingKit      0x201079fd +[SenTestClassEnumerator classEnumerator] + 24 
6 SenTestingKit      0x2010777d +[NSObject(SenTestRuntimeUtilities) senAllSubclasses] + 92 
7 SenTestingKit      0x201067b5 +[SenTestSuite updateCache] + 28 
8 SenTestingKit      0x20106753 +[SenTestSuite suiteForBundleCache] + 54 
9 SenTestingKit      0x201065db +[SenTestSuite structuredTests] + 14 
10 SenTestingKit      0x201065a1 +[SenTestSuite allTests] + 40 
11 SenTestingKit      0x20106573 +[SenTestSuite defaultTestSuite] + 14 
12 SenTestingKit      0x201057a3 +[SenTestProbe specifiedTestSuite] + 106 
13 SenTestingKit      0x20105d83 +[SenTestProbe runTests:] + 94 
14 Foundation       0x349c7e8d __NSFireDelayedPerform + 368 
15 CoreFoundation      0x3084e7fb __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 14 
16 CoreFoundation      0x3084e2ad __CFRunLoopDoTimer + 860 
17 CoreFoundation      0x3081f7a5 __CFRunLoopRun + 1088 
18 CoreFoundation      0x3081f277 CFRunLoopRunSpecific + 230 
19 CoreFoundation      0x3081f17f CFRunLoopRunInMode + 58 
20 GraphicsServices     0x31e445f3 GSEventRunModal + 114 
21 GraphicsServices     0x31e4469f GSEventRun + 62 
22 UIKit        0x31e51123 -[UIApplication _run] + 402 
23 UIKit        0x31e4f12f UIApplicationMain + 670 
24 VCCTesting       0x000234ff main + 70 
25 VCCTesting       0x00002538 start + 40 
) 
terminate called after throwing an instance of 'NSException' 

誰が間違っている可能性が何を知っていますか?

任意の助けに感謝し、 クリストファー

P.S.私はこれをApp Devフォーラムに掲載しましたが、まだ運がありませんでした:https://devforums.apple.com/message/333890

+0

ちょうどこれをどういうわけか打つ..私にとってはきれいにして再試行した。 – canhazbits

答えて

19

をNSZombieEnabledています私はNSZombieEnabledを私のユニットテスト起動ターゲットの引数にYESに設定していましたが、私はすべてを試しました(XCode/resのクリーニング/終了シミュレータの内容)。 これまでの単体テストの起動でゾンビを無効にする唯一の解決策は

+0

NSZombieEnabledを無効にすることは私のために働いてくれました!ありがとう、アレックス! –

+0

はい、それも私のために働いた – Antoni

+0

あまりにも私のために働いた。 –

0

私はこのエラーも同様に起こっていると思いました。

私は内部ベータテスト(環境設定ペインで完了)とアプリストアリリースの2つの製品を設定しました。どちらの製品ターゲットも、同じ製品名(ビルド設定でPRODUCT_NAME)で設定されていました。

これはXCode 3.xでもうまく機能しましたが、XCode 4はベータ版をビルドするたびにストア製品を構築しようとしていました。これは、XCodeが派生したファイルを置く場所の変更によるものだと思います.XCode 4はベータ版とストア製品を同じパスに格納していたため、ベータ版がビルドされたときにストア出力ファイルが変更され、再構築が必要でした。 ..

...とにかくベータ製品名 を変更すると、固定してい 仮固定二つの製品は異なる識別子を持っているので...私ものInfo.plistにバンドル識別子を変更した問題。現在、私が1つの製品をビルドすると同時に他のビルドはビルドされませんが、テストを実行するとクラッシュします:-(

私の唯一のアイデアは、新しくプロジェクトを完全に再作成することです設定とXcode 4は異なる何かをするかどうかを確認するためにファイル間。それとAppleとサポートインシデントを提出する...私はこの問題を持っていた?

乾杯、

アダム

+0

返事ありがとう、アダム!残念ながら、それは私の問題を解決しませんでした。ターゲットには異なる製品名があります...また、Xcode 3.2.4以降も同じ問題がありましたので、XCode 4リリースには関係しないと思います。 : –

+2

ああ、私はあまりにも早く話しました - 私はまだエラーが出ていますが、両方のターゲットを別々にきれいにした後にユニットテストを最初から構築して実行すると時折消えます。 – adamcohenrose

+1

Hah!サポートインシデントを提出しましたが、バグを起こすように言われました...私はちょっとしたことがあったときにやりますが、 – adamcohenrose

0

私は100%確信していませんが、各テストターゲットに対して異なるスキームを作成することで解決できるようです。 今日の午後はこのエラーが多かったですが、テストターゲットごとに別々のスキームを作成してからしばらくは起こっていません。

0

ちょうど私が持っているように、この問題に遭遇するかもしれない人のために:

KIFTesterがで
アサーション失敗をロード - [SenTestClassEnumerator INIT]、/SourceCache/OCUnit/OCUnit-5315/SourceCode/SenTestingKit/SenTestClassEnumerator.m :136
キャッチされていない例外 'NSInternalInconsistencyException'が原因でアプリを終了しています。理由: 'objc_getClassListは、必要以上のクラスを返しました。'

問題は、私はちょうど含まれていないその周りに移動するにはGoogleAnalytics 3.0 を3.0.3に更新しましたが、それでもこれらのライブラリ libGoogleAnalytics_debug.a libGoogleAnalyticsServices.a

のいずれかと同じ問題があることが判明しましたテスト用です

関連する問題