Before I begin with my recommendations it's probably worth me defining what I mean by "acceptance tests" by showing you where these sit conceptually in my testing arsenal: Unit Tests - Tests for an individual class, to ensure that it behaves as expected and that all behaviour is documented with a test. Acceptance tests - Tests for a piece of functionality, to ensure that the collection of classes involved "actually work" but excluding downstream dependencies Integration Tests - In-situ testing that the features continue to work when all dependencies are "real" I find that writing "acceptance tests" using SpecFlow is a great way to de-couple your behaviour from your code structure, making TDD more realistic and also meaning after a re-factor (which often results in re-factoring the unit tests) you can confirm there are no breaking changes. It also allows you to involve your QA/BA in the process by quantifying in plain English what scenario's you are catering for and how the system behaves for each. It's worth noting that SpecFlow can also be used to automate your integration tests, however that's a little more complex to setup as usually involved spinning up SQL servers, Kafka instances, mocked external APIs etc. and also is too slow to run those types of tests on build, whereas the acceptance tests I will demonstrate below you can quickly run on build like any other unit test. To create a SpecFlow project for testing an API add an NUnit test project and install the SpecFlow.NUnit.Runners & Microsoft.AspNetCore.Mvc.Testing NuGet packages into that test project, add a reference to the Api project and then begin creating your tests. My recommendations to consider are below: