Background
I have recently tried to develop a suite of tests for regression testing of a particular application. I have been using NUnit and have had no problems.
I ran into the issue of sending parameters to NUnit tests, for which no satisfactory answer seems to exist.
Question
Say I implement a simple unit tester that loads a class, runs the Startup, Test, and Teardown methods in order, catching exceptions and then unloads the assembly. What are the downsides of doing this versus using NUnit?
In this scenario, I can easily pass parameters to my test cases, or do any other crazy thing I might come up with. But my concern is what I lose from abandoning NUnit.
What do you lose? Your time.
If you’re working for a customer or business, they are (presumably) paying you to solve business problems, not to write infrastructure code. Some infrastructure may be necessary in order to address the business needs. In this case it’s clearly not. You’re reinventing the wheel.
Don’t fall into the Not Invented Here trap. Use NUnit. It supports parameterized tests. If NUnit doesn’t meet your needs, investigate MbUnit or xUnit.net. Or look at SpecFlow, etc. for BDD-style. Or FitNesse for acceptance testing. And this is only a partial list!
If you’re writing a test framework on your own for learning purposes, great! If not, you are wasting your time and/or your company’s money.
Addressing the technical aspects
JUnit was originally created during a long airplane trip. Back then there weren’t a lot of alternatives. Writing a testing framework is not a huge project. Writing a robust one that is full-featured and easy to use is more difficult. Writing test runners, IDE integration, CI integration, code coverage integration, etc. is significantly more difficult. And it’s been done. Unless you’re Ayende Rahien, don’t do it!
In addition to the integration, you also lose any features of NUnit you don’t implement (and there are a lot). I don’t use all of these, but I do rely on many of them.
(Moved from my comments)