iphone - 单元测试和 TDD、OCUnit 与 Google Tool Box

标签 iphone unit-testing tdd ocunit

我正在尝试在 OCUnit 和 Google Tool Box 之间进行选择,您有什么偏好,会推荐其中之一,为什么? 我很想听听您对这 2 种方法中任何一种的体验。

我对它们两个的主要问题是测试方法中崩溃的管理(例如:BAD ACCESS) 他们都无法告诉我崩溃发生在哪一个类!!!

使用 Google Tool Box,我可以看到正在运行哪个测试套件,但看不到测试用例(当您的测试套件有 50 个测试用例时,您应该怎么做?)

使用 OCUnit,我至少可以看到哪个测试套件中的哪个测试用例导致了崩溃。

以下是我向 GTB 传达的信息:

Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.000) seconds

Test Suite 'LogicTests' started at 2009-12-14 18:03:15 +0100

 /Users/admin/Documents/Tests/GTBTest/RunIPhoneUnitTest.sh: line 122:   688    Segmentation fault      "$TARGET_BUILD_DIR/$EXECUTABLE_PATH" -RegisterForSystemEvents

 Command /bin/sh failed with exit code 139

我可以看到是测试套件“LogicTests”引发了崩溃,但仅此而已。

对于 OCunit,这里是相同错误的消息:

Test Suite 'LogicTests' started at 2009-12-14 17:51:26 +0100
Test Case '-[LogicTests testFail]' started.
/Developer/Tools/RunPlatformUnitTests.include: line 415:   536 Segmentation fault      "${THIN_TEST_RIG}" "${OTHER_TEST_FLAGS}" "${TEST_BUNDLE_PATH}"

至少使用 OCUnit,我可以跟踪正在运行的测试用例并最终对其进行调试(但这可能需要很长时间,没有任何类和行号信息......)

您如何处理这些问题?

提前致谢。

PS:这是重现问题的方法,非常简单:

只需创建一个类,其中的方法在调用时会崩溃(在进行 TDD 时这种情况经常发生):

- (void) crashMethod {
 NSMutableArray *crashArray;
 [crashArray addObject:[NSObject new]];
}

然后创建一个调用此方法的测试用例:

- (void) testFail {
    ClassToTest *test = [[ClassToTest alloc] init];
 [test crashMethod];
 [test release];
 }

提前致谢, 文森特

最佳答案

我想无论如何我都会选择 GTB..

使用 xCode 3.2 OCUnit 错误和警告不会显示在代码内。 似乎这是一个已知问题: lhttp://osdir.com/ml/xcode-users/2009-10/msg00216.html

使用 GTB 可以正常工作。 我不敢相信,但 GTB 似乎比 OCUnit 更好地与新版本的 xCode 集成......

单元测试的调试不需要任何东西,它从一开始就工作得很好。 (使用 xCode 你需要一堆设置: http://chanson.livejournal.com/119578.html

使用 GTB,您可以在设备上运行测试,并且拥有用于 UI 测试的工具(似乎您可以创建一个假的 UIView 层次结构,然后将其与运行时的内容进行比较)。我对 UI 自动测试持怀疑态度(昂贵且难以维护),但这是一个很好的功能!

http://code.google.com/p/google-toolbox-for-mac/wiki/CodeVerificationAndUnitTesting

关于iphone - 单元测试和 TDD、OCUnit 与 Google Tool Box,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1902323/

相关文章:

eclipse - 如何使用 junit 5 为 eclipse 编写测试套件?

iphone - 在 iPhone 的 linphone 中启用 G729 编解码器

iphone - 需要有关 iphone 崩溃日志的帮助。身边有高手吗?

unit-testing - 如何在 Visual Studio 2005 中进行单元测试?

asp.net - 将 TDD 追溯应用到 ASP.Net Web 表单

php - Laravel 中的单元测试 : Error when setting the Currently Authenticated User

iphone - 在 iPad 中制作网格像素编辑器

iphone - MPMoviePlayerController 为流媒体电影创建自定义缓冲区进度条

javascript - 使用 Sanity npm 包开 Jest 模拟测试

python - 如何在 python setup.py 中运行测试套件