0

このアサートを最適化できることを教えてください。iOS での単体テストは、私を壁に追いやっています。NSArray のカウントに関する単純なアサーションは、次のように冗長であってはなりません。

GHAssertEquals([[NSNumber numberWithInt:[caseArray count]] intValue], 
                             [[NSNumber numberWithInt:627] intValue], 
                                              @"array count equals");

編集:以下の提案行

GHAssertEquals([caseArray count], 627, @"array count equals");

次の出力が生成されます。

Reason: Type mismatch -- array count equals

0   CoreFoundation                      0x01cfd02e __exceptionPreprocess + 206
1   libobjc.A.dylib                     0x0113ae7e objc_exception_throw + 44
2   CoreFoundation                      0x01d85fb1 -[NSException raise] + 17
3   Tests                               0x00027711 -[GHTestCase failWithException:] + 33
4   Tests                               0x0001a0ed -[CaseTest testGetCaseArrayFromJSONArray] + 3293
5   libobjc.A.dylib                     0x0114e663 -[NSObject performSelector:] + 62
6   Tests                               0x00022e19 +[GHTesting runTestWithTarget:selector:exception:interval:reraiseExceptions:] + 450
7   Tests                               0x0001ea90 -[GHTest run:] + 275
8   Tests                               0x000211ea -[GHTestGroup _run:] + 696
9   Tests                               0x00021513 -[GHTestGroup run:] + 130
10  Tests                               0x000211ea -[GHTestGroup _run:] + 696
11  Tests                               0x00021513 -[GHTestGroup run:] + 130
12  Tests                               0x000239a2 -[GHTestRunner runTests] + 257
13  Tests                               0x00023b12 -[GHTestRunner _runInBackground] + 79
14  Foundation                          0x00b85805 -[NSThread main] + 76
15  Foundation                          0x00b85764 __NSThread__main__ + 1304
16  libsystem_c.dylib                   0x983c7557 _pthread_start + 344
17  libsystem_c.dylib                   0x983b1cee thread_start + 34

FAIL (0.033s)
4

2 に答える 2

5

「型の不一致」は、GHAssertEqualsで両方の引数が同じ型である必要があるためです。[caseArray count]符号なし整数を返します。これは、符号付き整数である627とは一致しません。したがって、代わりに、符号なし627と比較してください627U

GHAssertEquals([caseArray count], 627U, @"array count equals");

または、OCHamcrestを使用して次のように言うこともできます

assertThat(caseArray, hasCountOf(627));

(OCHamcrestはGHUnitと互換性があります。)

于 2013-02-01T03:10:53.347 に答える
0

GHAsserEquals はわかりませんが、式は次と同等です。

GHAssertEquals([caseArray count], 627, @"array count equals");
于 2013-02-01T02:53:24.520 に答える