C# 如何对没有删除操作的服务进行自动集成测试,并在每次运行c时重用相同的数据#
我有一个WCF服务(仅限创建、检索和更新操作),这是一个ESB服务,它的设计不允许对数据进行验证,这意味着可以一次又一次地传递相同的数据,也可以传入空白数据,留下一个必填字段 我需要在每次运行时使用相同的数据对所有三个操作进行集成测试 检索和更新可以自动化,因为我可以多次检索相同的数据并进行更新 但是,如何使创建操作自动化呢?我可以在每次运行时创建相同的记录,但检索不知道从数据库检索哪个数据,因为它有多行相同的数据,我不想用相同的记录填充数据库 我知道这看起来很愚蠢,但这是事实。非常感谢您的建议和帮助C# 如何对没有删除操作的服务进行自动集成测试,并在每次运行c时重用相同的数据#,c#,automation,mstest,C#,Automation,Mstest,我有一个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中所述,我考虑过这种方法,这在较小的项目中是可行的,但我现在正在进行的项目规模太大了,所以这个选项变成了一个选项。有数百万条记录与数百个其他数据库映射。即使我相信我也不会被允许这么做。但是谢谢你的建议,谢谢。