dimanche 28 février 2016

database operations as a pre-requisite to unit tests?

How do I create a unit test that partially makes use of database unit tests but is called from a regular unit test?

Yes, perhaps they may not be unit tests; you may wish to call them integration tests. Regardless of what you would like to label them, they are tests.

Within my nunit tests, I am using helper constants:

private const string NumericSerial="123123";
private const string NonNumericSerial="123123 bad serialnumber";
private const int ValidPatientId=123;
private const int InvalidPatientId=-1;
private const int PatientIdThatDoesNotExistInppp=111291;
private const string SerialNumberThatDoesNotExistInshmk="123123";
private const string SerialNumberThatDoesExistInshmk="1015873";
private const byte InvalidFirmwareVersion=0;
private const int FacilityThatDoesntExistInAAA=Int32.MaxValue;

Prior to running any tests that make use of these constants, I would like to verify that these constant are correctly defined.

For example I can Assert that NumericSerial is indeed numeric without having to do any mocking or injecting of any dependencies - I would simply tryparse it.

However, other constants such as PatientIdThatDoesNotExistInppp will need to be verified that it indeed does not exist in the ppp database. In order to do this, I can follow several routes:

  1. Implement a linq query within entity framework
  2. Explicitly send a select statement to the database
  3. Or I could a database unit test by first creating the necessary record (in our case it would make sure that 111291 does not exist in the database.

Unless you advise strongly against option #3, I am inclined to implement that. How do I create a unit test that partially makes use of database unit tests but is called from a regular unit test?

I am looking for something like the following:

[Test]
public response_from_database_unit_test_equals_111291()
{
//call the database unit test
//retrieve value from database unit test
}

Aucun commentaire:

Enregistrer un commentaire