0

我有一个 WCF 服务(仅限创建、检索和更新操作),这是一个 ESB 服务,其设计目的是不对数据进行验证,这意味着可以一次又一次地传递相同的数据,或者您可以传递空白数据留下一个必填字段。

我需要在每次运行时使用相同的数据对所有三个操作进行集成测试。

检索和更新可以自动化,因为我可以多次检索相同的数据并进行更新。

但是我怎样才能自动化创建操作呢?我可以在每次运行时创建相同的记录,但检索不知道从数据库中检索哪些数据,因为它有多行相同的数据,我不想用相同的记录填充数据库。

我知道这看起来很愚蠢,但这就是现实。任何建议和帮助真的很感激。

注意:我有正常的 MSTest

4

2 回答 2

0

要处理您的测试数据问题,您可以使用 test cleanup 属性或 class cleanup 属性,它们是在给定类或方法中的所有测试分别完成运行后立即调用的方法。您可以在删除所有测试数据的清理方法中调用存储过程/查询。不要为每条记录使用不同的 GUID,而是使用清理 SQL 可以用来识别虚拟数据的其他 ID...

[TestClass()]
public sealed class MyClassTest
{

    [ClassCleanup()]
    public static void ClassCleanup()
    {
        // This method is called after all of the test methods in this
        // test class have finished running...call a cleanup stored procedure
    } 


    [TestMethod()]
    public void MyMethodTest()
    {
        // This is where you perform your test
    }
}

微软文档:http: //msdn.microsoft.com/en-us/library/ms243147%28v=vs.80%29.aspx

于 2013-07-25T02:24:39.010 回答
0

在测试开始之前System Under Test 必须具有预定义的已知状态,并且每个测试必须在完成后将系统返回到该状态。

这意味着每次测试调用Create或任何其他方法时,都必须在Cleanup方法中从数据库中删除记录。测试必须是独立的。

我知道该Create方法可能会在许多表中添加记录,这很难做到。一个简单(?)的方法是在方法中重新部署数据库Initialize或在 db获取快照Initialize并将 db返回到Cleanup.

于 2013-07-25T06:33:21.937 回答