我将Jenkins与Xcode插件配置为通过将测试构建操作添加到Custom xcodebuild参数设置来运行单元测试.有关让Jenkins使用Xcode 5运行单元测试的更多信息,请参阅此问题.
现在我已经运行了,它似乎将NSLog语句的控制台输出或最终** TEST SUCCEEDED **消息与测试结果混合在一起,因此偶尔会将解码器绊倒,将单元测试结果转换为Jenkins所需的JUnit格式.
例如,Jenkins日志显示如下输出:
Test Case '-[Redacted_Conversion_Tests testConvertTo_ShouldSetamount_WhenamountIsNotZero]' passed (** TEST SUCCEEDED **
0.000 seconds).
Test Case '-[Redacted_Conversion_Tests testConvertTo_ShouldSetamount_WhenamountIsZero]' started.
Run Code Online (Sandbox Code Playgroud)
什么时候它应该是:
Test Case '-[Redacted_Conversion_Tests testConvertTo_ShouldSetamount_WhenamountIsNotZero]' passed (0.000 seconds).
Test Case '-[Redacted_Conversion_Tests testConvertTo_ShouldSetamount_WhenamountIsZero]' started.
** TEST SUCCEEDED **
Run Code Online (Sandbox Code Playgroud)
我进一步调查了这一点,并把詹金斯拉出了画面.如果我在命令提示符下直接运行xcodebuild命令:
xcodebuild \
-workspace project.xcworkspace \
-scheme Tests \
-configuration Release \
-sdk iphonesimulator7.0 \
-destination "platform=iOS Simulator,name=iPhone Retina (4-inch),OS=latest" \
test
Run Code Online (Sandbox Code Playgroud)
输出总是很好,有序.
但是,如果我将输出传递给另一个程序或重定向到文件:
xcodebuild \
-workspace project.xcworkspace \
-scheme Tests \
-configuration Release \ …Run Code Online (Sandbox Code Playgroud) 我AFNetworking在Objective-C中设置了一个JSON帖子,并使用以下代码将数据发送到服务器:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @{@"name": deviceName, @"model": modelName, @"pin": pin};
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager.requestSerializer setValue:@"Content-Type" forHTTPHeaderField:@"application/json"];
[manager POST:@"SENSORED_OUT_URL" parameters:parameters
success:^(AFHTTPRequestOperation *operation, id responseObject)
{
NSLog(@"JSON: %@", responseObject);
}
failure:^(AFHTTPRequestOperation *operation, NSError *error)
{
NSLog(@"Error: %@", error);
}];
Run Code Online (Sandbox Code Playgroud)
我通过相同的请求收到信息,并希望将数据发送到 NSString.我该AFNetworking怎么做呢?
当我在Project Navigator中选择任何文件或尝试编辑它时,App Store中的Xcode 5崩溃.我删除了所有插件和应用程序的派生数据,它一直在崩溃.
有谁知道如何解决这个问题以及为什么会发生这种情况?
以下是错误的第一部分.
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Application Specific Information:
ProductBuildVersion: 5A1412
ASSERTION FAILURE in /SourceCache/DVTFoundation/DVTFoundation-3532/Framework/Classes/Protocols/DVTInvalidation.m:243
Details: <IDESourceControlCredentialsValidator, 0x7faec5e3c9b0> was never invalidated.
Run Code Online (Sandbox Code Playgroud)
我不确定这有什么帮助,但这里是Backtrace
Backtrace for allocation (if _creationBacktrace is set):
(null)
Object: <IDESourceControlCredentialsValidator: 0x7f86dceeb080>
Method: -dealloc
Thread: <NSThread: 0x7f86d8414c80>{name = (null), num = 1}
Hints: None
Backtrace:
0 0x000000010e3a1188 -[IDEAssertionHandler handleFailureInMethod:object:fileName:lineNumber:messageFormat:arguments:] (in IDEKit)
1 0x000000010d137655 _DVTAssertionHandler (in DVTFoundation)
2 0x000000010d137984 _DVTAssertionFailureHandler (in DVTFoundation)
3 0x000000010d20c6a6 _DVTInvalidation_DeallocSuper (in DVTFoundation)
4 0x000000010e33e2a3 -[IDESourceControlSSLAuthenticationWindowController .cxx_destruct] (in …Run Code Online (Sandbox Code Playgroud) 我是iOS 7新手,我发现SpringBoard无法启动应用程序,错误:-3与Xcode 5
使用Xcode 5我注意到symbolicatecrash.sh可执行文件在旧位置下不再可用:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash
谁知道我在哪里可以找到它?也许有最新的集成方式来表示崩溃报告?
谢谢
我刚刚将我的xcode更新为xcode 5,现在我需要在界面构建器中设置UIBUTTON的标记值,但我在xcode 5中看不到任何标记文本字段,请告诉我它在哪里消失了?
我先退出Xcode并手动将.xcworkspace文件从更改old_name.xcworkspace为new_name.xcworkspace.它似乎工作.但这是在Xcode 5中更改工作区名称的正确方法吗?
在Xcode 5之前,可以NSAssert使用默认的构建设置阻止发布版本包含语句及其变体:
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
Run Code Online (Sandbox Code Playgroud)
此设置可project.pbxproj在此处找到并在Xcode中设置:

(请注意,此抓取是从转换为Xcode 5的Xcode 4项目中获取的.)
每个目标只在Release版本中继承此设置.显然这是一件好事.该应用程序可能无论如何都会挣扎,而不是立即崩溃.而对于Debug版本,您希望在NSAssert失败时立即知道.
但是,我很难找到Xcode 5中的等价物.
使用默认模板创建新项目不会显示等效设置:

我的问题是,Xcode 5中的等效设置是什么,还是NS_BLOCK_ASSERTIONS必须手动添加到Other C FlagsRelease版本中?
当我尝试使用Xcode5 dp6在设备上运行app时.我收到了错误
找不到具有有效签名身份的配置文件
我该如何解决这个问题.

我一直在使用以下代码从MPMediaItemPickerController返回的MPMediaItem对象中提取资产URL,以便我可以将用户iPhone itunes音乐库中的音乐文件复制到文档文件夹进行处理,但是在iPhone 5s上我总是得到一个null来自MPMediaItemPropertyAssetURL的值,但是当我在iPhone 4或iPhone 5上运行相同的代码时,它应该返回一个正确的URL.
- (void) mediaPicker: (MPMediaPickerController *) mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection {
[self dismissViewControllerAnimated:YES completion:nil];
if(mediaItemCollection){
MPMediaItem *mediaItem = (MPMediaItem *)[mediaItemCollection.items objectAtIndex: 0];
NSString *songTitle = [mediaItem valueForProperty: MPMediaItemPropertyTitle];
NSLog(@"songtitle: %@", songTitle);
NSURL *assetURL = [mediaItem valueForProperty: MPMediaItemPropertyAssetURL];
NSLog(@"%@", assetURL);
}
}
Run Code Online (Sandbox Code Playgroud)
我曾尝试从有效的架构中删除arm64,并且只为armv7和armv7s构建,但这并没有解决这个问题.
有谁知道为什么会发生这种情况以及我如何解决它或者是否有可以使用的解决方法?我需要能够将音乐从iPhone的音乐库复制到文档文件夹,以便我可以正确处理dj应用程序的音乐.
谢谢
xcode5 ×10
ios ×4
xcode ×4
iphone ×2
objective-c ×2
afnetworking ×1
build ×1
debugging ×1
ios7 ×1
json ×1
macos ×1
pipe ×1
unit-testing ×1
xcodebuild ×1