如何在VS2008中使用集成单元测试来测试抽象类

     2023-02-25     121

关键词:

【中文标题】如何在VS2008中使用集成单元测试来测试抽象类【英文标题】:How to use integrated unit testing in VS2008 to test abstract class 【发布时间】:2010-10-27 07:42:01 【问题描述】:

我找不到任何关于它是否可以做到这一点的信息。

我在抽象类中有几个受保护的方法,想测试它们。

我不想从类继承并测试它的实现(除了技术上不是严格的单元测试,VS2008 也不会让你测试继承的方法)。

我想在集成单元测试的上下文中解决这个问题......我知道例如 nUnit 将允许您这样做。

有什么想法吗?建议?

【问题讨论】:

【参考方案1】:

VS2008 可以测试从基类继承的私有和保护方法,甚至是抽象方法。

如果您愿意以这种方式进行测试,请右键单击要测试的代码并创建单元测试。

下面是一段代码示例,我用它来测试来自抽象类的私有继承函数:

    [TestMethod()]
    [DeploymentItem("PA Manager.dll")]
    public void GetNextScheduledTimeTest4()
    
        TimeWheel timeWheel = new TimeWheel(1000, null);
        AnnouncementSchedule schedule = new AnnouncementSchedule();
        schedule.StartDate = DateTime.UtcNow.Date - TimeSpan.FromDays(1);
        schedule.StartTime = DateTime.Parse("09:00:00");
        schedule.EndDate = DateTime.UtcNow.Date;
        schedule.EndTime = DateTime.Parse("14:30:00");
        schedule.Interval = DateTime.MinValue + TimeSpan.Parse("01:00:00");
        schedule.DaysValid.ValidDay = new Day[7];
        schedule.DaysValid.ValidDay[0] = Day.Monday;
        schedule.DaysValid.ValidDay[1] = Day.Tuesday;
        schedule.DaysValid.ValidDay[2] = Day.Wednesday;
        schedule.DaysValid.ValidDay[3] = Day.Thursday;
        schedule.DaysValid.ValidDay[4] = Day.Friday;
        schedule.DaysValid.ValidDay[5] = Day.Saturday;
        schedule.DaysValid.ValidDay[6] = Day.Sunday;

        //// test for the next interval time NOT being valid, but the time period and day for the schedule is.

        PaAnnouncementSchedule paAnnouncementSchedule = new PaAnnouncementSchedule(timeWheel, schedule);
        PrivateObject param0 = new PrivateObject(paAnnouncementSchedule); 
        PaAnnouncementSchedule_Accessor target = new PaAnnouncementSchedule_Accessor(param0); 
        DateTime currentTime = DateTime.Parse("14:07:00");
        DateTime actual;
        DateTime expected = DateTime.MaxValue;
        actual = target.GetNextScheduledTime(currentTime);
        Assert.AreEqual(expected, actual, "Expected time to be DateTime.MaxValue");
    

其中重要的部分是:

PaAnnouncementSchedule paAnnouncementSchedule = new PaAnnouncementSchedule(timeWheel, schedule);
PrivateObject param0 = new PrivateObject(paAnnouncementSchedule); 
PaAnnouncementSchedule_Accessor target = new PaAnnouncementSchedule_Accessor(param0);

这允许我访问私有继承函数“GetScheduledTime”

【讨论】:

谢谢你,我正在尝试类似的东西......你已经为我很好地清理了语法。【参考方案2】:

试试RhinoMocks。他们可以动态创建派生类(所谓的部分模拟),您可以在其中调用您的方法。

无论如何,您都需要一个模拟框架来编写好的单元测试。这里是some documentation,可以给你一个印象。

【讨论】:

刚刚看了下,以后可能会用到这个框架。但在我这样做之前 - 即对于这个项目,我试图验证 VS2008 没有我需要的功能。感谢您的回复! Rofl 现在(4 年后)回顾了这一点,我认为我应该将您的答案标记为正确!对不起。

如何使用spring+easymock做java单元测试

...。那么,有个问题,在普遍使用Spring的应用程序中,我们如何去做单元测试看或者说,我们怎么样能高效的在Spring生态系统中实现各种单元测试手段看这就是本文章要告诉大家的事情。单元测试目前主要的框架包括Junit、TestNG,... 查看详情

阿里是如何进行单元测试培训的?(代码片段)

一、什么是单元测试?(10min)维基百科中是这样描述的:在计算机编程中,单元测试又称为模块测试,是针对程序模块来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中&... 查看详情

阿里是如何进行单元测试培训的?(代码片段)

一、什么是单元测试?(10min)维基百科中是这样描述的:在计算机编程中,单元测试又称为模块测试,是针对程序模块来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化编程中&... 查看详情

如何在 Visual Studio 2008 中分析 MsTest 的单元测试?

】如何在VisualStudio2008中分析MsTest的单元测试?【英文标题】:HowtoProfileUnitTestsofMsTestinVisualStudio2008?【发布时间】:2010-11-2501:08:21【问题描述】:我已经从VisualStudio2008开发版启动了集成测试(它们作为MSTest单元测试执行,即使它... 查看详情

单元测试

...想的测试案例独立于其它案例;为测试时隔离模块,经常使用stubs、mock或fake等测试马甲 查看详情

在 Spring Boot 中排除配置类以进行集成测试

...单元测试连接到一个端点测试配置类,该类具有单元测试使用的bean。我希 查看详情

从 VS6 移植到 VS2008 时在不寻常的架构中使用单元测试?

】从VS6移植到VS2008时在不寻常的架构中使用单元测试?【英文标题】:UseunittestsinunusualarchitecturewhenportingfromVS6toVS2008?【发布时间】:2010-09-2813:45:59【问题描述】:我们有一个主应用程序,它最多可以执行5个不同的exe。这些exe独... 查看详情

vs2010单元测试入门实践教程

...目中是否需要写单元测试代码的问题。但是如果你此时想使用VS中的单元测试的工具来测试某个方法是否正确,可你又从来没真正实践过,那么本教程将带你一步一步使用VS2010集成的UnitTest进行断言(Assert)式验证数据的正确性... 查看详情

如何在 Grails 单元测试中使用 Spock 模拟 passwordEncoder

】如何在Grails单元测试中使用Spock模拟passwordEncoder【英文标题】:HowtomockpasswordEncoderusingSpockinaGrailsunittest【发布时间】:2020-07-2212:19:50【问题描述】:我可以使用一些建议来模拟Grails单元测试中使用的自动连接依赖项。我已经省... 查看详情

如何在 pytest 中保持单元测试和集成测试分开

】如何在pytest中保持单元测试和集成测试分开【英文标题】:HowtokeepUnittestsandIntegrationstestsseparateinpytest【发布时间】:2019-07-2018:25:56【问题描述】:根据Wikipedia和各种articles,最好将测试分为单元测试(首先运行)和集成测试(... 查看详情

如何在 Android 中使用单元测试或仪器测试来测试警报管理器

】如何在Android中使用单元测试或仪器测试来测试警报管理器【英文标题】:HowtotestAlarmManagerusingUnitTestorInstrumentedTestinAndroid【发布时间】:2021-12-0601:27:04【问题描述】:我在测试警报管理器上设置的警报时遇到了问题。我想使用... 查看详情

如何在单元测试中访问 Dart 类

】如何在单元测试中访问Dart类【英文标题】:HowtoaccessaDartclassinaunittest【发布时间】:2013-04-2201:28:04【问题描述】:使用DartMilestone4版本21658我是Dart新手。我创建了一个类。我想对它进行单元测试。类和单元测试都在使用Dart编辑... 查看详情

如何使用注释在 testng + maven 中分离单元测试和集成测试?

】如何使用注释在testng+maven中分离单元测试和集成测试?【英文标题】:Howtoseperateunitandintegrationtestsintestng+mavenusingannotations?【发布时间】:2013-10-2300:27:11【问题描述】:maven故障安全插件需要能够区分单元测试和集成测试。似乎... 查看详情

java应该如何优雅地实现单元测试与集成测试

在日常的开发过程中,为了保证代码质量,有追求的程序员一般都会对自己编写的代码进行充分的测试,这种测试不仅仅是体现在对正常功能的简单接口调用,而是要根据代码中的各种逻辑分支,进行尽可能多的覆盖性单元测试... 查看详情

如何在 vs 代码中使用 mocha 生成覆盖率报告?

】如何在vs代码中使用mocha生成覆盖率报告?【英文标题】:Howtogeneratethecoveragereportusingmochainvscode?【发布时间】:2022-01-0710:33:44【问题描述】:我正在使用mocha为我的节点js应用程序运行单元测试。我使用以下命令运行测试用例。... 查看详情

如何在 Grails 2.0 服务中对 i18n 注入 messageSource 的使用进行单元或集成测试

】如何在Grails2.0服务中对i18n注入messageSource的使用进行单元或集成测试【英文标题】:HowtounitorintegrationtestuseofinjectedmessageSourcefori18ninGrails2.0service【发布时间】:2012-02-2610:01:00【问题描述】:我在Grails2.0项目中的一项服务中使用... 查看详情

java~springboot~h2数据库在单元测试中的使用

单元测试有几点要说的事实上springboot框架是一个tdd框架,你在进行建立项目时它会同时建立一个单元测试项目,而我们的代码用例可以在这个项目里完成,对于单元测试大叔有以下几点需要说明一下:单元测试的用例之间不要... 查看详情

使用强大的mockito测试框架来测试你的代码(代码片段)

...edvardhua校对者: hackerkevin, futureshine这篇教程介绍了如何使用Mockito框架来给软件写测试用例1.预备知识如果需要往下学习,你需要先理解Junit框架中的单元测试。如果你不熟悉JUnit,请查看下面的教程: www.vogella.com/tutoria... 查看详情