标签: sentestingkit

不支持iOS设备上的逻辑测试?

我正在使用SenTestingKit进行单元测试,但是我收到以下消息

不支持iOS设备上的逻辑测试.您可以在Simulator上运行逻辑测试.

我怎样才能做到这一点?

iphone ios sentestingkit

9
推荐指数
2
解决办法
8011
查看次数

Xcode5在运行64位单元测试时说"正在使用的模拟器"

我刚下载并安装了Xcode5 GM种子.我删除了以前的xcode(DP5).当我打开我的项目时,选择"iPhone Retina(4英寸64位)"并输入Command-U来运行我的SenTeskingKit单元测试,xcode总是抱怨"模拟器正在使用 - 模拟器无法启动因为它已经在使用中." 我已经运行xcode-select指向新的xcode,重新启动我的MacBookPro,并确保在Activity Monitor下没有其他iPhone sim进程运行.和想法?TIA.麦克风

64-bit ios-simulator sentestingkit xcode5

9
推荐指数
1
解决办法
2905
查看次数

XCode 4单元测试:是否可以忽略某些测试用例?

有没有办法忽略特定的测试用例而不将其评论出来?

有些测试是在实现存在之前编写的,所以在提交任何代码之前,我想先将这些测试标记为忽略,这样就不会给任何同事带来任何影响.

对它们进行评论会导致失败,不完整的测试失败.

xcode unit-testing ocunit sentestingkit

7
推荐指数
2
解决办法
2991
查看次数

使用SenTestingKit/OCUnit测试异常

我似乎能够找到用于测试异常的唯一解决方案是使用SenTestingKit的STAssertThrowsSTAssertThrowsSpecific,但是在抛出异常的两种情况下,被测试的应用程序都会挂起,直到我手动要求它继续.当然,测试框架应该吞下这些例外吗?如果没有,是否有人对测试异常有任何建议?

exception objective-c ocunit ios sentestingkit

6
推荐指数
1
解决办法
771
查看次数

用于iOS单元测试的动态"测试主机"或捆绑加载器?

如何根据当前方案使测试主机/捆绑加载器动态化?现在,该值设置为:

$(BUILT_PRODUCTS_DIR)/MyApp1.app/MyApp1
Run Code Online (Sandbox Code Playgroud)

问题是我在工作区中有4个应用程序,我想为所有这些应用程序使用相同的单元测试套件.如何根据当前方案动态更改"MyApp1"部分?它是基于构建期间的环境变量吗?我尝试将它设置为$(PROJECT_NAME)之类的东西,但这些似乎得到了测试套件的名称.

xcode unit-testing ios sentestingkit

6
推荐指数
1
解决办法
2903
查看次数

使用特定语言环境(en_US 或无)运行单元测试

有没有办法在运行单元测试时强制使用特定的语言环境?

例如。始终使用 en_US 或强制无语言环境,以便不加载任何 .lproj 文件。

我的单元测试对设置应用程序(在 iOS 模拟器中)中当前选择的语言很敏感。最好我希望我的单元测试对语言不敏感。

下面是我的单元测试代码,显示了问题

@interface MYGalleryTests : SenTestCase
@end
@implementation MYGalleryTests
-(void)test0 {
    // This test doesn't work. 
    // I get 'No pictures' when locale is en_US
    // I get 'Ingen billeder' when locale is da_DK
    NSString* actual = [MYGallery emptyMessage];
    NSString* expected = @"EMPTY_MESSAGE"; 
    STAssertEqualObjects(actual, expected, nil);
}
@end


@interface MYGallery : NSObject
+(NSString*)emptyMessage;
@end
@implementation MYGallery
+(NSString*)emptyMessage {
    return NSLocalizedStringFromTable(@"EMPTY_MESSAGE", @"Gallery", @"Message shown when gallery is empty");
}
@end


en.lproj/Gallery.strings
/* Message …
Run Code Online (Sandbox Code Playgroud)

cocoa nslocalizedstring ios nslocale sentestingkit

6
推荐指数
2
解决办法
5874
查看次数

基于iOS版本的条件单元测试

我的单元测试套件包含一些仅适用于最新iOS版本的测试用例.预计,在较旧的iOS版本上运行套件时,这些测试会失败.

是否有标准方法来指示这些测试用例应仅在特定的iOS版本上运行?

我想到的一个选择:

- (void) testSomethingThatOnlyWorksOniOS7
{
    const BOOL iOS7OrHigher = floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1;
    if (!iOS7OrHigher) return;

    // Actual test goes here
}
Run Code Online (Sandbox Code Playgroud)

或者,我可以告诉SenTestCase您动态跳过某些测试吗?

unit-testing objective-c ocunit ios sentestingkit

6
推荐指数
1
解决办法
1164
查看次数

我的核心数据实体在哪里?

我有一个预先存在的项目,我已经添加了核心数据模型.我添加了核心数据框架,添加了一个包含实体的数据模型,并将其包含在我的应用程序目标中,以及一些生成的NSManagedObject类.它编译得很好,现在我想为我创建的实体添加一些测试.按照这些说明,我已经设置了一个逻辑测试基类,其setUp方法如下:

- (void)setUp {
    model = [NSManagedObjectModel mergedModelFromBundles:nil];
    NSLog(@"model: %@", model);
    coord = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:model];
    store = [coord addPersistentStoreWithType:NSInMemoryStoreType
                                configuration:nil
                                          URL:nil
                                      options:nil 
                                        error:NULL];
    ctx = [[NSManagedObjectContext alloc] init];
    [ctx setPersistentStoreCoordinator:coord];
}
Run Code Online (Sandbox Code Playgroud)

这将编译并创建所有对象.但是,该模型没有实体!该NSLog()输出看起来像这样:

2011-10-29 23:56:58.941 otest[42682:3b03] model: (<NSManagedObjectModel: 0x19c6780>) isEditable 1, entities {
}, fetch request templates {
}
Run Code Online (Sandbox Code Playgroud)

那么我的实体在哪里?我已经在捆绑了一下,也没有.momd文件.我是否错过了让我的模型构建的关键步骤?

testing entities core-data ios sentestingkit

5
推荐指数
1
解决办法
1715
查看次数

为什么SenTestingKit导致我的应用程序崩溃?

我已经为iPhone创建了一个基于地图的应用程序,并且最近将其提交给了商店.我在设备或模拟器上运行应用程序没有遇到任何问题.但是,商店拒绝了它,因为它在发布时崩溃了.崩溃日志抱怨找不到SenTestingKit框架:

Date/Time:       2012-02-21 19:02:26.048 -0800
OS Version:      iPhone OS 5.0.1 (9A405)
Report Version:  104

Exception Type:  EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x00000001, 0xe7ffdefe
Crashed Thread:  0

Dyld Error Message:
  Library not loaded: /Developer/Library/Frameworks/SenTestingKit.framework/SenTestingKit
  Referenced from: /var/mobile/Applications/*Long Application Reference Number*/MyApp.app/U of T Map
  Reason: image not found
  Dyld Version: 199.5
Run Code Online (Sandbox Code Playgroud)

我已经调查了其他有这个问题的人,我确信当我继续使用它时,我会找到框架搜索路径,我需要成功地包含SenTestingKit框架.

我感到困惑并需要帮助理解的是:

  1. 为什么设备和模拟器在没有框架的情况下运行良好,但归档版本没有?

  2. 为什么它认为我需要这个框架?我在开发过程中没有使用任何单元测试.我使用了SBJSON和ASIHTTPRequest库,但是我没有在任何库代码中看到SenTestingKit的#import语句.

  3. 我是否更容易删除对SenTestingKit的需求或以某种方式在归档中正确包含它?我想解决这个问题,但我需要尽快重新提交给应用商店.

我真的想在概念层面上理解这个问题,而不是在事情发生之前就把它解决掉.

linker appstore-approval ios sentestingkit

5
推荐指数
1
解决办法
2224
查看次数

添加OCMock后,单元测试始终"成功"

我想在我的Cocoa项目的单元测试中使用OCMock.我已下载最新版本的OCMock(2.0.1)并将OCMock.framework复制到我的项目目录中.在Xcode中,我已将框架添加到单元测试目标的链接阶段.然后我添加了一些使用OCMock类的代码.

从那时起,所有单元测试都被报告为"成功" - 绿灯,没有错误或警告.即使在引入STFail电话后,Xcode声称"测试成功".在任意测试方法中放置断点表明它们都没有被执行.

如果我使用OCMock注释掉代码,包括import指令,问题仍然存在.

STFails当我从链接阶段删除OCMock时,问题就会消失 - 即,再次失败.

这类似于我之前提出的另一个问题,但不完全相同:在这种情况下,Log Navigator中的信息显示没有错误.什么可能导致这种行为?我该怎么做才能诊断出这个问题?

cocoa frameworks unit-testing ocmock sentestingkit

5
推荐指数
1
解决办法
236
查看次数