编写集成测试来测试数据库,Web服务调用

ali*_*ce7 5 c# testing integration-testing

我们刚开始编写集成测试来测试数据库,数据访问层,Web服务调用等.目前我有一些想法编写集成测试,例如1)总是在初始化函数中重新创建表.2)如果要在同一功能中保存新数据,请始终清除函数内的数据.

但我想知道一些更好的做法.

Ric*_*lly 5

与所有测试一样,必须从已知状态开始,并在测试完成后,清除到干净状态.

此外,测试代码经常被忽视,因为不是真正的代码,因此没有正确维护... 它比代码更重要.至少应尽可能多的设计,进入测试的架构.计划合理的抽象级别,即如果您正在测试Web应用程序,请考虑使用这样的层:浏览器交互的抽象,页面上组件的抽象,页面的抽象和测试.测试与页面和组件交互,页面与组件交互,组件与浏览器交互层交互,浏览器交互层与您的(可能是第三方)浏览器自动化库交互.

如果您的测试代码没有得到妥善维护或经过深思熟虑,那么它们将成为一种障碍,而不仅仅是编写新代码的辅助手段.

如果你的团队不熟悉测试,那里有许多编码katas,旨在教导良好测试的重要性(并且出于好的代码),他们通常关注单元测试级别,但是许多校长都是相同.


dol*_*phy 1

当对 DAL 进行单元测试时,我这样做:

[TestFixtureSetUp]
public void TestFixtureSetUp()
{

    //this grabs the data from the database using an XSD file to map the schema
    //and saves it as xml (backup.xml)
    DatabaseFixtureSetUp();  
}

[SetUp]
public void SetUp()
{

    //this inserts test data into the database from xml (testdata.xml)
    //it clears the tables first so you have fresh data before every test. 
    DatabaseSetUp();  
}

[TestFixtureTearDown]
public void TestFixtureTearDown()
{
     //this clears the table and inserts the backup data into the database
     //to return it to the state it was before running the tests.
    DatabaseFixtureTearDown();
}
Run Code Online (Sandbox Code Playgroud)