I have used NUnit with ArcObjects 9.2. Now I use visual studio built in unit tests (same idea.) Mocking up all the AOs you would need to do full tests is probably not realistic. I don't use unit tests for everything. For some things you can have a setup step to your tests that makes a copy of a database with test data, use AO in your test (init licenses and product first like an exe,) to open the featureclasses and pass them to your test. Use AO again to open the results and examine the contents. That works well for converters and such. Classes that require a feature or a geometry passed in, you can create it in your unit test. You can also create in memory workspace populate the values you need, etc. Again, it is not practical for everything. Simulating editor, document or application events is not practical (IMHO.) UI code is a unique challenge if you can write the code is MVP style, that helps. This is when segregating the business code tier for the UI code pays off, you can test the business code in unit test and the ui code in manual tests.