This is just a small behavior test.  It is protecting against a regression that accidentally removes the call to pushManager.replaceThread.  I think it is (barely) useful enough to leave around but will remove it if you don't think it is worth it.

You're right it doesn't test the real intent of the exception handling.  Because PushManager creates ApnsClientThreads directly I struggled to come up with a clean way of testing.  I would need to either need to create an unwanted ApnsClientThread factory type class and pass it in or move the ApnsClientThread creation to it's own method in PushManager and override it in a test.  I'll add the test code for the latter and see what you think.