loading...

Discussion on: From TDD to DDD: Building a .NET Core Web API - Part 7

Collapse
cdandro profile image
cdandro

Yes, that is the part I was talking about. I don't understand why you would want a failing test case to "stick around". IMO, this would cause you to need to review the tests every time to confirm you didn't actually break something. Image having thousands and thousands of test cases with several developers. I feel you would need to consistently be checking which ones are failing to know if you broke something or if that is "one of the ones that supposed to be there".

Just my 2 cents

Thread Thread
lucianopereira86 profile image
LUCIANO DE SOUSA PEREIRA Author

Unfortunately, I've had a bad experience in the past that made me paranoic about the possibility of a valid value being considered invalid. Since then, I've tested it as well in my Theories. I know I am breaking the a TDD rule, but it was only my vision as developer.
I will edit my posts to let very clear that this approach was my decision.
Thanks anyway.

Thread Thread
blenderfreaky profile image
blenderfreaky

What about making the test "invertible", by adding a bool parameter which will swap failure and success around if set to true? That way the test would still exist and be green

Thread Thread
lucianopereira86 profile image
LUCIANO DE SOUSA PEREIRA Author

good idea.
I've made something similar but using enum.

Thread Thread
hidegh profile image
balazs HIDEGHETY

to make it clear, have separate SUCCESS and FAIL test is a good thing, like:

  • expect that all users with names less than 20 chars to be accepted
  • expect all users with names more than 20 chars to be rejected (rejection is accepted so it's our GREEN indicator).

best to do one test per fact, e.g. test the 20 char limit, test if there's at least a special char in the password and have multiple values for that test that should pass.

same way give multiple values for the test where the failing condition is tested, e.g.:
fact_password_without_special_chars_should_be_rejected