I repeatedly hear BDD enthusiasts advocate using both SpecFlow and MSpec in the same project.

  • Apparently SpecFlow is more suitable for outside-in/UI tests. (For example, web tests which simulate mouse-clicks, etc, using WatiN or something similar.)

  • Apparently MSpec is more suitable for unit-tests.

Now my question is - why use two frameworks which are incredibly similar and do virtually the same thing?

Why not instead:

  • Choose one BDD framework and stick with it. Use it for outside-in/UI tests, as intended,
  • Write your unit-tests normally, with an established unit-testing framework (such as NUnit, MSTest, etc)?

I thought the reason we adopt BDD is so we can test behaviours, which are driven externally, by means of integration tests.

I don't see how/why this applies to unit tests.

Edit
Report