Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

Reading an article Evil Unit testing, I am not exactly sure WHY the unit tests should never use DB, network or file systems. What if it an network app?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
671 views
Welcome To Ask or Share your Answers For Others

1 Answer

Unit tests are used to test the functionality of the smallest unit of your code. They should not have any dependency on any external resource that might change in future.

To take an example, let's say today you write a unit test that test a method that performs addition of two numbers.

public void AddNumberTest()
{
    int a = 4; // Assume 4 coming from a database.
    int b = 5; // Assume 5 coming from a database.

    int c = a + b;
    Assert.True(9, c);
}

This will run today. That's totally cool.

Let's say tomorrow you come and change the functionality of the Add method. Now you should be able to run the test and it should be pass. But let's assume somehow the database server (or external resource ) is down. Then the test fail.

Even if someone changes the values in database, you need to be aware of the change to be made to the test.

Is that what you want??? Absolutely not. Right

That's why we write unit test cases that should be independent of external resources. That where we use mocks and stubs.

You should be able to run unit test a thousand times and it should give the same results always.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...