草庐IT

unit-testing

全部标签

c# - 如何在具有多个间接级别的项目中使用单元测试

我正在查看一个非常强调单元测试的现代项目。根据古老的格言“面向对象编程中的每个问题都可以通过引入新的间接层来解决”,该项目采用了多层间接。副作用是相当多的代码如下所示:publicboolIsOverdraft){balanceProvider.IsOverdraft();}现在,由于强调单元测试和保持高代码覆盖率,每段代码都有针对它编写的单元测试。因此这个小方法将有三个单元测试。那些会检查:如果balanceProvider.IsOverdraft()返回true那么IsOverdraft应该返回true如果balanceProvider.IsOverdraft()返回false,那

c# - 单元测试时 stub 与模拟

这个问题在这里已经有了答案:WhatarethedifferencesbetweenmocksandstubsonRhinoMocks?(5个答案)关闭8年前。我最近对测试非常感兴趣,我现在正努力学习以尽可能最好的方式进行单元测试。我将NUnit与RhinoMocks一起使用。我也在Stackoverflow上阅读了很多内容,但未能找到我的问题的明确答案。我想知道的是,如果我有如下所示的方法,我应该模拟OfficeClass依赖项并测试GetAllOffices还是仅对依赖项使用stub并验证方法GetAllOffices已被调用并且我确实得到了办公室返回我对stub设置的预期?pub

c# - async/await 单元测试代码覆盖率

如何为异步/等待方法编写单元测试,我使用的是VisualStudio2013。假设我们有一个异步方法:publicasyncTaskDoSomethingAsync(){...await_service.DoInternalAsync();...}由于我使用的是最新版本的VisualStudio,它对异步方法单元测试有很好的支持:[TestMethod]publicasyncTaskDoSomthingAsyncTest(){...await_objectUnderTest.DoSomethingAsync();//howtoverifytheresult???hereiswhatId

c# - 单元测试依赖方法

我想对我创建的类的方法进行单元测试,但此方法需要先调用另一个方法。示例://ThiswouldworkMyClassmyClass1=newMyClass(mockDevice);myClass1.Run(myDatastructure);myClass1.Stop();//ThiswouldthrowanInvalidOperationExceptionMyClassmyClass2=newMyClass(mockDevice);myClass2.Stop();Run正在硬件设备上开始操作,而Stop当然会尝试停止该操作(发送重置命令并启动超时计时器).无论如何,我想测试调用Stop

c# - 什么是等同于在 Rhino Mocks 中使用 Ordered() 的 AAA 语法

我一辈子都找不到在Rhino中使用Fluent/AAA语法来验证操作顺序的正确语法。我知道如何使用老式的记录/回放语法来做到这一点:MockRepositoryrepository=newMockRepository();using(repository.Ordered()){//setsomeorderedexpectations}using(repository.Playback()){//test}任何人都可以告诉我RhinoMocks的AAA语法中的等效项是什么。如果您能为我指出一些相关文档,那就更好了。 最佳答案 试试这个

c# - 模拟索引属性

我正在使用Moq编写单元测试。我创建了一个模拟对象。现在,当我尝试模拟其属性时,出现错误“表达式树可能不包含索引属性”这是我的代码。publicNodeGetNode(IMyInterfaceinterface,stringitemName){returninterface.Items[itemName];}这是单元测试varexpected=newNode();varitemName="TestName";varmock=newMock();mock.Setup(f=>f.Items[itemName]).Returns(expected);vartarget=newMyClass(

c# - 使用 Entity Framework 的 Repository 和 Unit Work 模式正确处理?

干杯!我对使用UnitofWorkwithRepository有一些疑问。特别是EntityFramework中子上下文的作用。我搜索了很多关于这个主题的信息,但我发现的只是不同类型的使用模式,我很困惑,我无法理解主要思想。1.应该在哪里实现配置和保存?-是否正确实现了DbContext的Inheritance类中的Disposable?之后是在Repository和UnitofWork中还是在UnifoWork中实现?-将方法保存在工作单元或存储库中的何处?我的存储库将是通用的我的代码在架构风格和其他细节方面是否正确?请告诉我我的想法是否错误。interfaceIRepository

c# - 挣扎于最小起订量 : The following setups were not matched

我是第一次使用Moq,我正在努力让测试正常运行。我正在尝试最小化服务层的Save()方法。publicvoidSave(UserViewModelviewModel){//todo:thisstilldoesn'taddressupdatingapassword.TheUserViewModeldoesn'tcontainanyPassworddata.if(viewModel.Id!=Guid.Empty){//TheUserIdisnotempty,we'reeitherupdatinganexistinguser//orwe'reinsertinganewuserviasyncv

c# - 为什么 Task.ContinueWith 在此单元测试中执行失败?

我遇到了一个单元测试失败的问题,因为TPL任务从未执行过它的ContinueWith(x,TaskScheduler.FromCurrentSynchronizationContext())。问题原来是因为在任务启动之前不小心创建了一个WinformsUI控件。这是一个重现它的例子。您会看到,如果您按原样运行测试,它就会通过。如果您在未注释Form行的情况下运行测试,它将失败。[TestClass]publicclassUnitTest1{[TestMethod]publicvoidTestMethod1(){//CreatenewsynccontextforunittestSynch

c# - UI测试框架+持续集成?

所以我有一个我继承的应用程序,我想围绕它构建一个自动化测试套件。该应用程序在设计时并未考虑可测试性,并且代码是“大泥球”。我的计划是使用UI自动化测试框架并在UI级别创建一套测试,直到我有足够的覆盖率让我有信心开始重构并在代码中引入一些接缝以提高可测试性和设计。这是一个.NetWinForms应用程序,我知道的两个框架是:NUnitForms和ProjectWhite根据我的阅读,这两个框架在尝试作为自动构建(持续集成)的一部分运行时都会出现问题,因为大多数CI产品作为Windows服务运行,如果UI使用模态对话框,应用程序将死得很惨。我使用CruiseControl.Net作为我的C