Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何对没有删除操作的服务进行自动集成测试,并在每次运行c时重用相同的数据#_C#_Automation_Mstest - Fatal编程技术网

C# 如何对没有删除操作的服务进行自动集成测试,并在每次运行c时重用相同的数据#

C# 如何对没有删除操作的服务进行自动集成测试,并在每次运行c时重用相同的数据#,c#,automation,mstest,C#,Automation,Mstest,我有一个WCF服务(仅限创建、检索和更新操作),这是一个ESB服务,它的设计不允许对数据进行验证,这意味着可以一次又一次地传递相同的数据,也可以传入空白数据,留下一个必填字段 我需要在每次运行时使用相同的数据对所有三个操作进行集成测试 检索和更新可以自动化,因为我可以多次检索相同的数据并进行更新 但是,如何使创建操作自动化呢?我可以在每次运行时创建相同的记录,但检索不知道从数据库检索哪个数据,因为它有多行相同的数据,我不想用相同的记录填充数据库 我知道这看起来很愚蠢,但这是事实。非常感谢您的建议

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

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

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

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

我知道这看起来很愚蠢,但这是事实。非常感谢您的建议和帮助


注意:我有一个普通的MSTest

来处理您的测试数据问题,您可以使用test cleanup属性或class cleanup属性,这是在给定类或方法中的所有测试分别完成运行后立即调用的方法。您只需在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
    }
}

Microsoft文档:

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

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


我知道
Create
方法可能会在许多表中添加记录,这很难做到。一种简单的(?)方法是在
Initialize
方法中重新部署数据库,或者在
Initialize
中重新部署数据库,并在
Cleanup
中将数据库返回到该快照中。您是否可以在每次测试运行时在其中一个非关键字段中添加新的GUID,然后搜索记录并找到具有相同GUID的记录?这将允许您唯一地标识插入当前测试运行中的记录。这就是我现在正在进行的测试,但是,您可以看到,问题是每次我创建记录数据库时,都会被虚拟数据填满。谢谢,我很清楚这一点,但我没有访问数据库的权限,该数据库是XRM端,我正在ESB端编写测试,如descriptionYa中所述,我考虑过这种方法,这在较小的项目中是可行的,但我现在正在进行的项目规模太大了,所以这个选项变成了一个选项。有数百万条记录与数百个其他数据库映射。即使我相信我也不会被允许这么做。但是谢谢你的建议,谢谢。