问题标签 [google-toolbox-for-mac]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
296 浏览

cocoa - 使用适用于 Mac 的 Google 工具箱记录到文件时记录文件翻转

我正在使用 Google 工具箱 for Mac 的 GTMLogger 来记录我正在开发的应用程序中的文件。

当文件变得足够大时,我正在尝试决定如何进行日志文件翻转。

理想情况下,当日志文件在任何时候达到 1 mb 且最多 11 个日志文件时,我想要类似 log4net 的立即翻转,但我没有看到任何内置方法可以做到这一点,我想知道是否尝试添加它麻烦多于其价值。

我能想到的更简单的选择是在应用程序启动时进行此检查并滚动日志,使其超过一定大小。这样做的缺点当然是如果有人让应用程序运行一两个星期(并且由于应用程序的一部分是启动守护程序,这对于那些很少重新启动的人来说肯定是可能的),可能会有一个非日志文件- 在此期间建立的微不足道的大小(取决于启用的日志记录级别)。

我在这里最好的选择是什么?

0 投票
2 回答
810 浏览

objective-c - Match first word of a phrase in a String

I am using the GTMRegex class from the Google toolbox for mac (in a Cocoa / Objective-C) app:

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

I need to do a match and replace of a 3 word phrase in a string. I know the 2nd and 3rd words of the phrase, but the first word is unknown.

So, if I had:

lorem BIFF BAM BOO ipsem

and

lorem BEEP BAM BOO ipsem

I would watch to match both (BEEP BAM BOO) and (BIFF BAM BOO). I then want to wrap them in bold HTML tags.

Here is what I have:

However, this is not working. basically, I cant figure out how to match the first word when I dont know it.

Anyone know the RegEx to do this?

Update:

GTRegEx uses POSIX 1003.2 Regular Expresions, so the solution is:

Note the crazy syntax for the word boundaries.

Update 2 : Here is the JavaScript version:

0 投票
13 回答
27008 浏览

iphone - 如何对异步 API 进行单元测试?

我已将Google Toolbox for Mac安装到 Xcode 中,并按照此处的说明设置单元测试。

这一切都很好,我可以在我的所有对象上测试我的同步方法绝对没问题。但是,我实际上想测试的大多数复杂 API 通过调用委托上的方法异步返回结果 - 例如,对文件下载和更新系统的调用将立即返回,然后在文件完成下载时运行 -fileDownloadDidComplete: 方法.

我将如何将其作为单元测试进行测试?

似乎我想要 testDownload 函数,或者至少是测试框架“等待” fileDownloadDidComplete: 方法运行。

编辑:我现在切换到使用 XCode 内置 XCTest 系统,并发现Github 上的TVRSMonitor提供了一种非常简单的方法来使用信号量等待异步操作完成。

例如:

0 投票
3 回答
565 浏览

iphone - 应用于 NSString 的类别是否也通过“免费桥”应用于 NSCFString?

我们正在将一个库集成到一个 iPhone 应用程序中,该应用程序似乎在内部使用 google toolbox for iPhone。google 工具箱gtm_stringBySanitizingAndEscapingForXML向 NSString 添加了一个方法。问题是,每当我们尝试调用这个库时,我们都会得到

[NSCFString gtm_stringBySanitizingAndEscapingForXML]: unrecognized selector sent to instance 0x272478

因此,该库似乎在 NSCFString 上调用该方法,该类别不适用于该类别。那么......是否该类别不适用于通过免费桥梁到 CoreFoundation 课程的情况?如果是这样的话,那么我们至少知道它为什么会爆炸。弄清楚如何解决它是另一回事。

0 投票
1 回答
1206 浏览

iphone - iPhone:如何使用 gcov?

我正在尝试在 iPhone Project 上使用 gcov 并按照此处描述的 Apple 说明进行操作,但它不起作用。

当我构建并配置项目时,会为每个目标文件创建 .gcda 文件。但是没有执行的行被记录到 .gcda 文件中。(CoverStory 显示所有覆盖率均为 0%)

我刚刚向模板项目添加了一个简单的类,如下所示。

我分配了这个类并在 application:didFinishLaunchingWithOptions 中调用了 func1,我希望显示 SomeClass 的覆盖率(50% 左右)。

我正在使用 OSX 10.6.4、iPhone SDK 4.0 和 Xcode 3.2.3。需要更多配置吗?请指导。

2010/7/15 更新:

我在@tonclon 给我的链接中尝试了这些提示,但它还没有奏效。在下面的描述中是我尝试过的。

  1. GCC 4.0 编译的 Cocoa 应用程序在“Cocoa”应用程序的项目设置中,

    • 将 GCC_INSTRUMENT_PROGRAM_FLOW_ARCS 设置为 YES
    • 将 GCC_GENERATE_TEST_COVERAGE_FILES 设置为 YES
    • 将其他链接器标志设置为 -lgcov
    • 将 C/C++ 编译器版本设置为 4.0

    它起作用了,.gcda 文件按预期生成了覆盖信息。但是,在带有 SDK 4.0 的 iPhone 项目中,我不能使用相同的配置,因为 gcc 4.0 无法在 SDK 4.0 中编译某些语法(例如 Blocks)

  2. 在 google-tool-box 中使用自定义 gcov 库而不是在 Other Linker Flag 中设置 -lgcov,我尝试了 google-toolbox-for-mac 中包含的自定义 gcov 库,但生成的 .gcda 文件显示覆盖率为 0%。(同样的结果)

你能告诉我下一步我应该做什么吗?任何建议表示赞赏。

0 投票
2 回答
278 浏览

iphone - 使用 google toolbox for mac 编译单元测试时出错

嗨,我的应用程序运行良好,但是当我尝试运行单元测试时,我收到了这个错误......

具有讽刺意味的是我已经搜索了整个项目并且我没有任何类似的代码行**[NSURL initFileURLWithPath:]**

我几乎浪费了半天的时间,但没有任何成功。

我在项目中使用 coredata,下面是带有堆栈跟踪的屏幕截图。

谁能指导我正确的方向。

谢谢 截屏

**编辑:**解决此问题的方法是不仅添加 .xcdatamodel 文件,还添加根文件 .xcdatamodeld。Core Data 无法找到我的模型,因此显示此错误。希望有一天它可以帮助某人。

0 投票
2 回答
3927 浏览

iphone - OCMock:为什么在尝试调用 UIWebView 模拟时会出现无法识别的选择器异常?

编辑:这都是由我的其他链接标志设置中的拼写错误引起的。有关更多信息,请参阅下面的答案。


我正在尝试模拟 UIWebView 以便我可以验证在 iOS 视图控制器的测试期间是否调用了其上的方法。我正在使用从 SVN 修订版 70(截至本问题的最新版本)构建的 OCMock 静态库,以及来自 SVN 的 Google Toolbox for Mac (GTM) 单元测试框架修订版 410。当视图控制器尝试调用预期的方法时,我收到以下错误。

我的测试代码是:

我的视图控制器代码是:

我确实发现如果我改为使用测试将成功运行:

但是,只要我添加了被注释掉的期望,使用部分模拟时就会返回错误。

我有其他在同一个项目中成功使用模拟的测试。

有任何想法吗?OCMock 是否支持模拟 UIKit 对象?

编辑:根据以下答案中的建议,我尝试了以下测试,但遇到了同样的错误:

0 投票
2 回答
676 浏览

iphone - google-toolbox-for-mac iphone 单元测试:1073 中止陷阱 mkdir "$CFFIXED_USER_HOME" 命令 /bin/sh 失败,退出代码为 134

我正在尝试从 google-toolbox-for-mac 设置 iPhone 单元测试框架。我创建了一个简单的单元测试并尝试构建它并收到以下错误。我的一位同事可以使用相同的项目并在他的机器上成功构建。对于我的一生,我无法弄清楚我可能会错过什么。以下是我看到的错误消息。有没有人有任何见解?

未找到属于您的匹配进程

mkdir(1073) malloc:保护边缘

mkdir(1073) malloc:使用标准记录器将 malloc 堆栈记录到磁盘

mkdir(1073) malloc:启用涂鸦以检测 mod 以释放块

mkdir(1073) malloc:进程 1059 不再存在,堆栈日志从 /tmp/stack-logs.1059.mkdir.QDKY28.index 中删除

mkdir(1073) malloc:堆栈日志被写入 /tmp/stack-logs.1073.mkdir.KrpE2L.index

检测到尝试调用 iPhone 上不存在的系统库中的符号:从函数调用 getopt$UNIX2003 ??? 在图像 mkdir 中。

如果您在 gdb 中运行模拟器二进制文件时遇到此问题,请确保首先“设置 start-with-shell off”。

/Developer/google-toolbox-for-mac/UnitTesting/RunIPhoneUnitTest.sh:第 150 行:1073 中止陷阱 mkdir "$CFFIXED_USER_HOME"

命令 /bin/sh 失败,退出代码 134

0 投票
2 回答
808 浏览

unit-testing - 使用 OCMock 检查 IBOutlet 连接

我想通过单元测试验证IBoutlet我的控制器类中的所有 s 是否正确连接到 NIB 文件中。我想用 OCMock 来做这件事——即使我知道我可以简单地断言控制器变量不在nil加载 NIB 之后。这更多的是对流程如何工作的一般理解 - 据我所知,这也应该有效。

NIBOnOffSwitchCell作为其 File's Owner OnOffSwitchCellController。这是我的测试方法:

guiBundle存在并被验证为有效的 NSBundle 对象。

据我了解loadNibNamed:owner:options:将反序列化NIB中的对象,调用awakeAfterUsingCoder:然后通过调用setValue:forKey:每个出口来设置出口。

我又添加了三个断言,以确保加载的 NIB 实际上包含正确的对象——当我放入真实控制器的实例时,这些断言通过了。但是当我使用如上所示的模拟时,它甚至没有走到这一步。相反,测试会因此崩溃:

因此awakeAfterUsingCoder:,尽管我显然预料到了,但它却在抱怨这个电话是出乎意料的。

我还尝试消除这种期望并用一个不会报告多余方法调用的漂亮模拟替换模拟,但它仍然会中止并报告setValue:forKey:没有被调用。

我在这里想念什么?

0 投票
1 回答
201 浏览

objective-c - 使用 Google Toolbox for MAC (GTM) 对 Mac 应用程序进行单元测试

GTM 是否仅对 iPhone 应用程序有用,还是我可以将它用于 iPhone 和 Mac 应用程序?

提前致谢。