Brittle tests
We've implemented the three requirements for the update method:
-Done- It should take a timestamp and price value and set it on the object
-Done- After multiple updates, the object gives us the latest price
-Done- The price cannot be negative
Now, let us suppose that a new requirement comes up that we had not known about before:
The
Stockclass needs a method to check if the stock has an increasing trend. An increasing trend is one where each of the latest three updates is an increase over the previous one.
So far, our Stock implementation just stores the latest price. In order to implement this functionality, we need to store some history of past price values. One way to do this is to change the price variable to a list. The problem is that when we change the internals of our implementation, it would break all of our tests, because all of them access the price variable directly and assert that it has specific values.
What we see here is an example of test brittleness.
A test is...