草庐IT

unit-testing

全部标签

c# - 在 c# 解决方案中未发现 nunit 测试

以下是我的开发设置的配置(不需要所有这些;但我想我还是会提供这些信息)VisualStudio2012更新4单元2.6.3Nunit测试适配器1.1Windows7旗舰版64位我正在研究的解决方案有许多使用Nunit用c#编写的单元测试。我以管理员身份登录。出于某种原因,我无法在测试资源管理器中查看测试。打开解决方案后,VS显示的错误消息是“检测到意外错误。查看输出Pane了解详细信息”输出Pane只提到检测到0个测试我尝试了从重新安装Nunit、修复VS到重置IDE和窗口布局的所有方法。没有成功。如果我在笔记本电脑上以其他用户身份登录,我可以在测试资源管理器中查看测试。鉴于上面的第4

c# - 我如何模拟私有(private)领域?

我真的是模拟的新手,正在尝试用模拟对象替换私有(private)字段。目前私有(private)字段的实例是在构造函数中创建的。我的代码看起来像...publicclassCache{privateISnapshot_lastest_snapshot;publicISnapshotLatestSnapshot{get{returnthis._lastest_snapshot;}privateset{this._latest_snapshot=value;}}publicCache(){this.LatestSnapshot=newSnapshot();}publicvoidFreeze

c# - 模拟 'System.Console' 行为

是否有一种标准方法可以通过针对接口(interface)而不是System.Console进行编程来使C#控制台应用程序可单元测试?例如,使用IConsole界面?你做过吗,用的是什么方法?当您的应用程序需要写入标准输出时,您是否公开了事件? 最佳答案 我认为您使用接口(interface)的方法可行,但我认为我不会使用事件。假设应用程序不接受命令行参数以外的用户输入,我可能会使用类似这样的东西来包装Console.Write/Console.WriteLine:publicinterfaceIConsoleWriter{voidW

c# - 使用扩展方法中定义的查询进行单元测试

在我的项目中,我使用以下方法从数据库中查询数据:使用可以返回任何类型且不绑定(bind)到一种类型的通用存储库,即IRepository.Get而不是IRepository.Get.NHibernatesISession是此类存储库的示例。在IQueryable上使用扩展方法具有特定的T封装重复查询,例如publicstaticIQueryableByInvoiceType(thisIQueryableq,InvoiceTypeinvoiceType){returnq.Where(x=>x.InvoiceType==invoiceType);}用法是这样的:varresult=sess

c# - 调用扩展方法的设置结果

我正在尝试Setup返回对扩展方法的调用并正在接收:SetUp:System.NotSupportedException:Expressionreferencesamethodthatdoesnotbelongtothemockedobject:m=>m.Cache.GetOrStore("CacheKey",()=>"Foo",900)引用GetOrStore似乎有问题Cache对象上的方法,它是一种扩展方法。代码编译但测试失败并出现此异常。我需要做什么来设置这样的扩展方法的结果? 最佳答案 扩展方法不能像实例方法一样被模拟,因为

c# - 在单元测试中循环

我们可以在单元测试中有一个循环吗?我的方法返回一个IEnumerable,我想对IEnumerable所在的逻辑进行单元测试被build。基本上我想测试IEnumerable中元素的数量符合预期。我想不出另一种方法来测试内部IEnumerable没有循环语句。如果这是一个好的做法,请告诉我。 最佳答案 没有技术原因您不能这样做。一个单元测试中可以有多个Assert语句。在循环中使用Assert语句只是在测试中使用多个Assert语句的简写方式。但是,有些人认为单元测试中应该只有一个Assert语句。我个人不同意-我认为测试应该测试一

C#,NUnit : Is it possible to test that a DateTime is very close, 但不一定等于另一个?

假设我有这个测试:[Test]publicvoidSomeTest(){varmessage=newThing("foobar");Assert.That(thing.Created,Is.EqualTo(DateTime.Now));}例如,这可能会使Thing的构造函数失败,这会花费一些时间。是否有某种NUnit构造允许我指定Created时间不必完全等于DateTime.Now,只要它在一秒之内?是的,我知道构造函数不应该花费太多时间,但只是作为一个例子:p 最佳答案 没试过,但根据thedocs看起来这应该可行:Assert

c# - 将 Application Insights 与单元测试结合使用?

我有一个MVC网络应用程序,我正在使用SimpleInjectorforDI。单元测试几乎覆盖了我所有的代码。但是,现在我已经在一些Controller中添加了一些遥测调用,我在设置依赖项时遇到了问题。遥测调用用于将指标发送到MicrosoftAzure托管的ApplicationInsights服务。该应用程序不在Azure中运行,只是一个带有ISS的服务器。AI门户告诉您有关应用程序的各种信息,包括您使用遥测库发送的任何自定义事件。因此,Controller需要一个Microsoft.ApplicationInsights.TelemetryClient的实例,它没有接口(inte

C# - 在单元测试中断言两个对象相等

使用Nunit或Microsoft.VisualStudio.TestTools.UnitTesting。现在我的断言失败了。[TestMethod]publicvoidGivenEmptyBoardExpectEmptyBoard(){vartest=newBoard();varinput=newBoard(){Rows=newList(){newRow(){Cells=newList(){0,0,0,0}},newRow(){Cells=newList(){0,0,0,0}},newRow(){Cells=newList(){0,0,0,0}},newRow(){Cells=new

c# - 如何为 ASP.NET Core 中的单元/集成测试模拟 IFormFile?

我想编写用于在ASP.NETCore中上传文件的测试,但似乎找不到一种很好的方法来模拟/实例化从IFormFile派生的对象。关于如何做到这一点有什么建议吗? 最佳答案 假设你有一个Controller,比如......publicclassMyController:Controller{publicTaskUploadSingle(IFormFilefile){...}}...使用被测方法访问IFormFile.OpenReadStream()。从ASP.NETCore3.0开始,使用FormFileClass的实例现在是IFor