我想对一个执行异步操作的方法进行单元测试:Task.Factory.StartNew(()=>{//methodtotestandreturnvaluevarresult=LongRunningOperation();});我在我的单元测试(用c#编写)中stub了必要的方法等,但问题是在我断言测试之前异步操作没有完成。我该如何解决这个问题?我应该创建TaskFactory的模拟或任何其他技巧来对异步操作进行单元测试吗? 最佳答案 您必须有某种方法来伪造任务创建。如果您将Task.Factory.StartNew调用移动到某个依赖项
我正在尝试对我编写的自定义ConfigurationSection进行单元测试,我想将一些任意配置XML加载到System.Configuration.Configuration中对于每个测试(而不是将测试配置xml放在Tests.dll.config文件中。也就是说,我想做这样的事情:ConfigurationtestConfig=newConfiguration("...");MyCustomConfigSectionsection=testConfig.GetSection("mycustomconfigsection");Assert.That(section!=null);然
我用WIA写了一个简单的扫码。我没有扫描仪设备,因此无法对其进行测试。我可以模拟WIA设备来测试它吗? 最佳答案 这绝对是您想要的:https://github.com/twain/wia-on-twain我模拟了一台扫描仪,发布了一个TWAIN和一个WIA界面。还模拟了图形页面的扫描,因此您可以尝试不同的分辨率和配色方案。 关于c#-在没有扫描仪/摄像头设备的情况下测试WIA,我们在StackOverflow上找到一个类似的问题: https://stack
这个问题在这里已经有了答案:Unittestingamultithreadedapplication?(9个回答)HowshouldIunittestmultithreadedcode?(29个答案)关闭5年前。您对如何测试多线程应用程序有什么建议吗?我知道,线程错误很难发现,它们可能随时发生,也可能根本不发生。测试很困难,结果永远不确定。当然最好仔细设计和编程并发模块。尽管如此-我不想遗漏测试方面。因此,有时运行大量处理相同项目的线程可能会引发线程错误。有什么想法或最佳实践可以提高隐藏线程错误的命中率吗?(我正在使用.Net/C#)
这个问题在这里已经有了答案:UnittestingprivatemethodsinC#(16个答案)关闭6年前。我目前正在使用C#进行开发-以下是一些背景信息:我们用我们的客户端应用程序实现MVP,并且我们有一个圈规则,该规则规定任何方法的圈复杂度都不应大于5。这导致了很多小的私有(private)方法,这些方法通常只负责一件事。我的问题是关于对类进行单元测试的:通过公共(public)方法测试私有(private)实现没问题......我在实现这个方面没有问题。但是……下面的情况呢:Example1.Handletheresultofanasyncdataretrivalreques
我真的要用头撞墙了。在VisualStudio(Express2013)中获取程序输出有那么难吗?在编写代码时,我发现在工作和故障排除时能够打印出变量、操作等的值是绝对必要的。在Java和Eclipse中,System.out.println()始终有效,打印到IDE控制台。在编写C程序时,我总是使用控制台,因此回显任何内容都没有问题。但是,在VSExpress2013中,我似乎无法获得任何输出。问题是否与我正在编写单元测试而不是“正常”可执行程序有关?如果是这样,有没有办法让VS在单元测试类中显示程序输出?我试过使用调试,但也没有显示任何内容。认为存在配置问题,我一直在寻找调试未显示
我正在将一个大型解决方案从VS2010迁移到VS2013。当我们使用.runsettings文件时,我们有几千个测试没有运行。我们之前的测试设置文件是.testsettings类型的。我的理解(在非常沮丧的谷歌搜索之后)是,为了使用新的测试运行器VSTest,您需要使用.runsettings文件。我没能找到很多关于这个文件可以支持什么的文档。这基本上是一个可用的资源:http://msdn.microsoft.com/en-us/library/vstudio/jj635153.aspx我们之前的.testsettings文件有一个很大的部署项目部分,现在找不到,因此测试立即失败。问
我在单元测试项目中创建了一个测试,我想在其中使用ShowDialog()函数弹出一个Form:[TestMethod]publicvoidTestDialog(){//ThisclassinheritsfromFormTestFormserviceTestForm=newTestForm("Mytestform");serviceTestForm.ShowDialog();return;}我希望此测试到达ShowDialog(),并“无限期”运行,直到我关闭窗口。但是,当我“带调试”运行此测试时,测试到达ShowDialog(),但没有出现任何窗体。奇怪的是,如果我“不调试”地运行,这
假设我有这个测试:[Test]publicvoidSomeTest(){varmessage=newThing("foobar");Assert.That(thing.Created,Is.EqualTo(DateTime.Now));}例如,这可能会使Thing的构造函数失败,这会花费一些时间。是否有某种NUnit构造允许我指定Created时间不必完全等于DateTime.Now,只要它在一秒之内?是的,我知道构造函数不应该花费太多时间,但只是作为一个例子:p 最佳答案 没试过,但根据thedocs看起来这应该可行:Assert
我想测试这个Controller:[HttpGet]publicIListGetNotificationsByCustomerAndId([FromUri]string[]name,[FromUri]int[]lastNotificationID){return_storage.GetNotifications(name,lastNotificationID,_topX);}特别是,在此方法中,我想测试传入输入以形成请求Url的数组是否与进入routeData.Values的数组相同。如果对于单值参数(不是数组)它有效,但不适用于数组。如果我调试Values,我只会看到controll