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
Stock
class 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...