我想对一个执行异步操作的方法进行单元测试:Task.Factory.StartNew(()=>{//methodtotestandreturnvaluevarresult=LongRunningOperation();});我在我的单元测试(用c#编写)中stub了必要的方法等,但问题是在我断言测试之前异步操作没有完成。我该如何解决这个问题?我应该创建TaskFactory的模拟或任何其他技巧来对异步操作进行单元测试吗? 最佳答案 您必须有某种方法来伪造任务创建。如果您将Task.Factory.StartNew调用移动到某个依赖项
作为TDD的新手,我正在努力编写处理集合的单元测试。例如,目前我正在尝试提出一些测试方案来从根本上测试以下方法intFind(Listlist,Predicatepredicate);该方法应返回列表list中与谓词predicate匹配的第一项的索引。到目前为止,我能够想出的唯一测试用例是当list不包含任何项目时-返回-1当list包含1个匹配predicate的项目时-返回0当list包含1个与predicate不匹配的项目时-返回-1当list包含2个都匹配predicate的项目时-返回0当list包含2个项目时,第一个匹配predicate-返回0等...但是正如您所见,这
我每天在VisualStudio2012中运行几次测试。我最近发现我的磁盘空间非常低。我发现我项目中的测试结果文件夹使用了60GB。我删除了文件,但我不想让它发生。我搜索了如何执行此操作,但我只能找到2008年和2010年的解决方案。他们说我需要对选项中的测试工具进行一些更改。我在我的选项中找不到这个。我怎样才能避免这些文件出现,或者将它们保持在最低限度? 最佳答案 马克·西曼suggestsextendingtheCleantarget在项目文件末尾的Import元素之后添加:..\TestResults然后,每当您想手动删除测试
我有一个存在大量内存泄漏的应用程序。例如,如果打开一个View并将其关闭10次,我的内存消耗会增加,因为View没有完全清理。这些是我的内存泄漏。从测试驱动的角度来看,我想编写一个测试来证明我的泄漏,并且(在我修复泄漏之后)断言我修复了它。这样我的代码以后就不会被破坏。简而言之:有没有办法断言我的代码没有从单元测试中泄漏内存?例如我可以做这样的事情吗:objectsThatShouldNotBeThereCount=MemAssertion.GetObjects().Count;Assert.AreEqual(0,objectsThatShouldNotBeThereCount);我对
我正在VS2010中编写一些编码的UI测试来测试Web应用程序。我希望能够为解决方案中的整组测试打开浏览器一次,然后在测试完成后再次关闭浏览器。我已经在一个方法上尝试了AssemblyInitialize属性,其中包含我的BrowserWindow.Launch,但是当我运行它时出现以下异常:AssemblyInitializationmethodOrdersGridTesting.SuiteSetup.Loginthrewexception.Microsoft.VisualStudio.TestTools.UITest.Extension.TechnologyNotSupported
使用Xunit,如何获取当前正在运行的测试的名称?publicclassTestWithCommonSetupAndTearDown:IDisposable{publicTestWithCommonSetupAndTearDown(){varnameOfRunningTest="TODO";Console.WriteLine("Setupfortest'{0}.'",nameOfRunningTest);}[Fact]publicvoidBlub(){}publicvoidDispose(){varnameOfRunningTest="TODO";Console.WriteLine("
我有使用nUnit编写的单元测试,测试的结构与PhilHaack'spost中的类似namespaceMyNamespace{[TestFixture]publicclassClassToTest{[TestFixture]publicclassMethodToTest{[Test]publicvoidThrowsArgumentNullException_OnNullIndex(){...}..moretestsforthemethod..}[TestFixture]publicclassAnotherMethodToTest{[Test]publicvoidThrowsArgume
我为我们的项目添加了一个协变接口(interface):interfaceIView{}interfaceIPresenterwhereTView:IView{TViewView{get;}}我创建了一些类,实现了这些接口(interface):classTestView:IView{}classTestPresenter:IPresenter{publicTestViewView{get{returnsomething;}}privatevoidDoSomething(){}}我可以毫无问题地使用它:IPresenterpresenter=newTestPresenter();所以一
我最近一直在研究TDD,参加了一个session并涉足了一些测试,我已经100%被说服了,我非常喜欢TDD。因此,我向我的前辈们提出了这个问题,他们准备给它一个机会,所以他们让我想出一种在我们的企业产品开发中实现TDD的方法。问题是我们的系统从VB6时代发展到.NET,并实现了许多遗留技术和一些远非最佳实践的开发技术,即ASP.NET代码隐藏和客户端脚本中的大量业务逻辑。然而,最大的问题是我们的类是如何与数据库访问紧密耦合的;属性、方法、构造函数——通常以某种形式具有某些数据库访问权限。我们使用内部数据访问代码生成器工具创建sqlDataAdapters,为我们提供我们可能想要的所有数
我正在使用aspnetcore1.0和xunit。我正在尝试为一些使用IMemoryCache的代码编写单元测试。但是,每当我尝试在IMemoryCache中设置一个值时,我都会收到Null引用错误。我的单元测试代码是这样的:IMemoryCache被注入(inject)到我要测试的类中。但是,当我尝试在测试中的缓存中设置一个值时,我得到了一个空引用。publicTestGetSystemUnderTest(){varmockCache=newMock();returnnewTest(mockCache.Object);}[Fact]publicvoidTestCache(){vars