Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unit Testing - Is it bad form to have unit test calling other unit tests

I have a unit test called TestMakeAValidCall(). It tests my phone app making a valid call.

I am about to write another test called TestShowCallMessage() that needs to have a valid call made for the test. Is it bad form to just call TestMakeAValidCall() in that test?

For reference this is my TestMakeAValidCall() test.

    [TestMethod]     public void TestMakeAValidCall()     {        //Arrange         phone.InCall = false;         phone.CurrentNumber = "";         // Stub the call to the database         data.Expect(x => x.GetWhiteListData()).             Return(FillTestObjects.GetSingleEntryWhiteList());         // Get some bogus data         string phoneNumber = FillTestObjects.GetSingleEntryWhiteList().             First().PhoneNumber;         // Stub th call to MakeCall() so that it looks as if a call was made.         phone.Expect(x => x.MakeCall(phoneNumber)).             WhenCalled(invocation =>                        {                            phone.CurrentNumber = phoneNumber;                            phone.InCall = true;                        });         //Act         // Select the phone number         deviceControlForm.SelectedNumber = phoneNumber;         // Press the call button to make a call.         deviceMediator.CallButtonPressed();         //Assert         Assert.IsTrue(phone.InCall);         Assert.IsTrue(phone.CurrentNumber == phoneNumber);     } 
like image 344
Vaccano Avatar asked Sep 02 '09 16:09

Vaccano


People also ask

Should unit tests depend on each other?

Tests should never depend on each other. If your tests have to be run in a specific order, then you need to change your tests. Instead, you should make proper use of the Setup and TearDown features of your unit-testing framework to ensure each test is ready to run individually.

What are two limitations of unit testing?

Limitations of Unit Testing Unit testing cannot detect integration or interfacing issues between two modules. It cannot catch complex errors in the system ranging from multiple modules. It cannot test non-functional attributes like usability, scalability, the overall performance of the system, etc.

What errors are commonly found during unit testing?

Unit testing considerations What errors are commonly found during Unit Testing? (1) Misunderstood or incorrect arithmetic precedence, (2) Mixed mode operations, (3) Incorrect initialization, (4) Precision inaccuracy, (5) Incorrect symbolic representation of an expression.


2 Answers

Refactor the setup to another method and call that method from both tests. Tests should not call other tests.

like image 121
tvanfosson Avatar answered Sep 28 '22 05:09

tvanfosson


IMHO, you should do one of the following:

  • Create a method that returns a valid call, and use it separately for both tests (not one calling the other)
  • Mock the valid call for the ShowCallMessageTest
like image 26
Samuel Carrijo Avatar answered Sep 28 '22 03:09

Samuel Carrijo