По поводу тестирования с искусственным возвратом NIL, думаю, возможны два варианта:
1) Каким-нибудь способом узнавать тип указателя, который сейчас выделяет NEW. И если типы указателей разные, то можно не считать N-й NEW, который должен вернуть NIL, а поставить проверку на тип указателя, который должен вернуть NIL.
2) Если типы указателей одинаковые, то предыдущий способ не будет работать, но в этом случае, думаю, можно каким-нибудь способом получить стек вызовов и поставить проверку на то, что NEW вызывается из определенной функции.