我正在用C#编写一个数据结构(使用fibonacciheap的优先级队列),我正在尝试将其用作TDD的学习经验,我对此还很陌生。我知道每个测试应该只测试类的一个部分,这样一个单元的失败就不会把我与多个测试失败混淆,但我不确定当数据结构的状态时如何做到这一点对考试很重要。例如,privatePriorityQueuequeue;[SetUp]publicvoidInitialize(){this.queue=newPriorityQueue();}[Test]publicvoidPeekShouldReturnMinimumItem(){this.queue.Enqueue(2);thi
我有一些读取和修改文件的函数。为了使单元测试独立于任何文件系统问题,我想将文件包含在项目中。但是,我的函数应该是获取文件路径,而我只能从程序集中获取一个FileStream。知道如何获取项目中资源文件的文件路径吗?System.Reflection.Assemblya=System.Reflection.Assembly.Load(assemblyName);FileStreamstream=a.GetFile(assemblyName+"."+fileName); 最佳答案 对于这个问题,我通常的解决方案是重构我的程序以在调用方法
如何对自定义DelegatingHandler进行单元测试?我有以下内容,但它提示未设置innerHandler。varhttpRequestMessage=newHttpRequestMessage(HttpMethod.Get,"http://foo.com");varhandler=newFooHandler(){InnerHandler=newFooHandler()};varinvoker=newHttpMessageInvoker(handler);varresult=awaitinvoker.SendAsync(httpRequestMessage,newCancella
我有一个派生自HttpApplication的类,它添加了一些额外的功能。我已经到了需要对这些功能进行单元测试的地步,这意味着我必须能够创建HttpApplication的新实例、伪造请求并检索响应对象。我该如何对HttpApplication对象进行单元测试?我目前正在使用Moq,但我不知道如何设置所需的模拟对象。 最佳答案 不幸的是,这并不是特别容易做到,因为HttpApplication不适合很容易地进行模拟;没有可模拟的接口(interface),并且大多数方法未标记为虚拟。我最近遇到了与HttpRequest和HttpWe
似乎在许多单元测试中,参数化测试的值要么被烘焙到测试本身,要么以预先确定的方式声明。例如,这是取自nUnit的单元测试(EqualsFixture.cs)的测试:[Test]publicvoidInt(){intval=1;intexpected=val;intactual=val;Assert.IsTrue(expected==actual);Assert.AreEqual(expected,actual);}这具有确定性的优点;如果您运行测试一次,但它失败了,它将继续失败,直到代码被修复。但是,您最终只能测试一组有限的值。不过,我忍不住觉得这是一种浪费;完全相同的测试可能在项目的整
我想测试设置某个属性(或更一般地说,执行某些代码)是否会在我的对象上引发某个事件。在这方面,我的问题类似于UnittestingthataneventisraisedinC#,但我需要很多这样的测试,而且我讨厌样板文件。所以我正在寻找一个更通用的解决方案,使用反射。理想情况下,我想做这样的事情:[TestMethod]publicvoidTestWidth(){MyClassmyObject=newMyClass();AssertRaisesEvent(()=>{myObject.Width=42;},myObject,"WidthChanged");}对于AssertRaisesEv
我一直在谷歌搜索甚至Bing-ing,但我没有想出任何令人满意的东西。我有一个包含一些命令的ViewModel,例如:SaveCommand、NewCommand和DeleteCommand。我的SaveCommand执行保存到文件操作,我希望它是一个async操作,这样UI就不会等待它。我的SaveCommand是AsyncCommand的一个实例,它实现了ICommand。SaveCommand=newAsyncCommand(asyncparam=>{Connectioncon=awaitConnection.GetInstanceAsync(m_configurationPat
我有一个带有隐藏日历的Windows窗体。我想在DataGridView的当前单元格正下方显示表单。位置根据当前单元格的位置而变化。我不想要当前单元格或当前列,我想要位置以便我可以设置我的日期表单的位置。这是我正在使用的但它不起作用:intpo_X=paygrid.GetCellDisplayRectangle(e.ColumnIndex,e.RowIndex,false).Left+paygrid.Left;intpo_Y=paygrid.GetCellDisplayRectangle(e.ColumnIndex,e.RowIndex,false).Bottom+paygrid.To
我的VS2012Update1解决方案中有2个c#测试项目,一个显示类库图标,一个显示测试项目图标。他们都作为测试项目工作,但这种差异让我发疯。(短途车程)。有人知道如何解决这个问题吗?我已经查看了.csproj和.sln文件,但没有任何东西让我眼前一亮。 最佳答案 在解决方案资源管理器中右键单击项目并选择“编辑项目文件”在中添加一个新child节点:{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}保存更改并关闭文件在解决方案资
我是TDD的新手。我已经开始在View模型上创建我需要的属性作为普通自动属性。publicstringFirstname{get;set;}然后我创建一个测试[TestMethod][Tag("Property")]publicvoidFirstNameTest(){ViewModel=newCustomerViewModel();ViewModel.PropertyChanged+=(s,e)=>{Assert.AreEqual("Firstname",e.PropertyName);Assert.AreEqual("Test",ViewModel.Firstname);};View