Fadeproof
Fadeproof

Reputation: 3058

Should I mix my UnitTests and my Integration tests in the same project?

I am using NUnit to test my C# code and have so far been keeping unit tests (fast running ones) and integration tests (longer running) separate, and in separate project files. I use NUnit for doing both the unit tests and the integration tests. I just noticed the category attribute that NUnit provides, so that tests can be categorized. This begs the question, should I mix them together and simply use the category attribute to distinguish between them?

Upvotes: 10

Views: 2654

Answers (6)

Alex Fort
Alex Fort

Reputation: 18819

I would keep with whatever method you're currently using. It's more of an opinion thing, and you wouldn't want to have to re-tool your whole testing method.

Upvotes: 0

Mike Two
Mike Two

Reputation: 46203

The original motivation behind [Category] was to solve the problem you mention. It was also intended to create broader test suites but that is kind of what you are doing.

Do be careful with [Category]. Not all test runners support it the same way the NUnit gui does (or did, I haven't upgraded in a while). In the past some runners would ignore the attribute if it was on the class itself or just ignore it all together. Most seem to work now.

Upvotes: 0

dr. evil
dr. evil

Reputation: 27285

I don't think it really matters that much but separating them sounds like a better idea, since isolation, automation will be so easier. And category feature is nice but not that good from usability point of view.

Upvotes: 0

Bluenuance
Bluenuance

Reputation: 4983

seperate them if possible, because integration tests normally take much longer than UnitTests. Maybe your project grows and you end up with very much tests, all which take a short amount of time - except the integration tests - and you want to run your UnitTests as often as possible...

Upvotes: 2

krosenvold
krosenvold

Reputation: 77261

I find that using separate projects for unit test and integration tests tends to create a little too many top level artifacts in the projects. Even though we're TDD and all, I still think the code being developed should be deserving at least half of the top-level of my project structure.

Upvotes: 1

Steven A. Lowe
Steven A. Lowe

Reputation: 61262

if it is not too difficult to separate them, do so now

unit tests should be run early and often (e.g. every time you change something, before check-in, after check-in), and should complete in a short time-span.

integration tests should be run periodically (daily, for example) but may take significant time and resources to complete

therefore it is best to keep them separate

Upvotes: 10

Related Questions