gpt4 book ai didi

c# - WCF/SQL Server 集成测试太慢?

转载 作者:太空宇宙 更新时间:2023-11-03 16:30:53 25 4
gpt4 key购买 nike

我有一个集成测试一直失败(在 Visual Studio 中),但是,通过查看数据库来验证结果表明这里的被测系统实际上是成功的。

这是测试的基本思想:

private static readonly EfContext db = new EfContext();

[TestMethod]
void Complete_System_Run_Through_Is_Successful()
{
// Create a new unique message and request...
var message = Guid.NewGuid().ToString();
var request = new FooRequest { Message = message };

var fooClient = null; /* WCF proxy */
try
{
// Call the service...
fooClient = new FooClient();
fooClient.CallService(fooRequest);
}
finally
{
// Close client or Abort faulted client...
var channel = fooClient as ICommunicationObject;
try
{
if (channel.State != CommunicationState.Faulted)
channel.Close();
}
catch { channel.Abort(); }
}

// Verify there are 15 instances (traces) present in the database...
var actualNumberOfTraces = db.Traces.Count(x => x.Message == message);
Assert.AreEqual(15, actualNumberOfTraces);
}

被测试的 WCF 服务会触发一系列其他下游服务(想想“服务总线”),其中每个监听服务都会向数据库添加一个条目(跟踪)。从头到尾,此过程在每个完整系统运行过程中记录 15 条此类跟踪。

验证数据库中的结果表明测试运行成功(数据库中存在所有 15 个跟踪)。但是,测试运行失败(在 Visual Studio 中),发现的实际跟踪数在 3-6 之间。我唯一能想到的是 Assert 被调用得太早(即数据库尚未完成更新)。

无论如何,一切正常,所有痕迹确实存在于数据库中,我只是在这个测试中遇到了问题。有什么建议吗?

最佳答案

目前丑陋的解决方案是添加一个 Thread.Sleep(250) 来让数据库有时间 catch 进度。如果您能想出更优雅的解决方案,我绝对有兴趣听听!

关于c# - WCF/SQL Server 集成测试太慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10800450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com