しかも毎回発生する箇所が違うとか、発生しないことがあったりしてかなり厄介だった。
原因は詳しく追ってないけど多分以下。
・GHUnitはデフォルトでは別スレッドでテストを実行している
・GHVerifyViewでViewのテストをするときにUIGraphicsGetImageFromCurrentImageContextでViewの画像を生成する。
UIGraphicsGetImageFromCurrentImageContextはメインスレッドで実行しなければならない。
・画像の生成とViewの検証が異なるスレッドで行われているので画像が生成される前にViewの検証をしようとしてEXC_BAD_ACCESSが発生する。
解決策はGHViewTestCaseのサブクラスで以下を実装し、メインスレッドでテストさせること。
- (BOOL)shouldRunOnMainThread { return YES; }
参考:GHTestCase Class Reference
objective c - UIGraphicsGetImageFromCurrentImageContext memory leak / pdf previews - Stack Overflow