首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何从VB .NET中的单独项目中对私有函数进行单元测试?

在VB .NET中,对私有函数进行单元测试的方法是通过使用反射。以下是一个简单的步骤说明:

  1. 首先,确保你已经安装了一个单元测试框架,例如NUnit或xUnit.NET。
  2. 在你的测试类中,创建一个测试方法,例如TestPrivateMethod()
  3. 使用BindingFlags.NonPublicBindingFlags.Instance来获取私有函数的方法信息。
  4. 使用MethodInfo.Invoke()方法来调用私有函数。
  5. 使用断言(assertions)来验证私有函数的返回值是否符合预期。

以下是一个示例代码:

代码语言:vb
复制
Imports System.Reflection
Imports NUnit.Framework

<TestFixture>
Public Class PrivateMethodTest

    <Test>
    Public Sub TestPrivateMethod()
        Dim obj As New MyClass()
        Dim methodInfo As MethodInfo = GetType(MyClass).GetMethod("MyPrivateMethod", BindingFlags.NonPublic Or BindingFlags.Instance)

        Dim result As Object = methodInfo.Invoke(obj, New Object() {10})

        Assert.AreEqual(20, result)
    End Sub

End Class

Public Class MyClass

    Private Function MyPrivateMethod(ByVal value As Integer) As Integer
        Return value * 2
    End Function

End Class

在这个示例中,我们创建了一个名为PrivateMethodTest的测试类,其中包含一个名为TestPrivateMethod()的测试方法。我们使用BindingFlags.NonPublicBindingFlags.Instance标志来获取MyClass类中名为MyPrivateMethod的私有函数的MethodInfo对象。然后,我们使用MethodInfo.Invoke()方法来调用私有函数,并使用断言来验证返回值是否符合预期。

请注意,虽然这种方法可以对私有函数进行单元测试,但它可能会破坏封装原则。因此,在使用这种方法时,请确保权衡利弊。

相关搜索:如何对列表中的每一项进行循环?VB.NET如何对从数组中删除重复项的方法进行单元测试?如何在xaml中单独对ListView中的项进行分组如何在Swift中对私有或内部函数进行单元测试?如何对阶乘函数中的堆栈溢出进行单元测试?如何对服务的构造器中调用的函数进行单元测试?如何使用vb.net以编程方式对Excel中的列进行排序?Haskell中的groupByKey -如何按函数对列表中的项进行分组?如何对React的render()中定义为const的函数进行单元测试?如何从react钩子中的组件对stateChange回调进行单元测试?如何在JestJs中对TypeScript类的构造函数抛出异常进行单元测试如何通过VB.NET使用存储在web.config中的密钥对字段进行加密?如何在Python中对不知道返回值的函数进行单元测试如何在vb net和sql Server中不再有行的情况下对行进行条件当从React中的对象数组映射时,如何对每个单独的渲染元素进行操作?如何对DataGrid列进行求和,并在VB.net WPF中的TextBox、标签或网格页脚显示结果?如何使用模拟的定时器函数在C中对状态机进行单元测试?如何对扩展AndroidViewModel的ViewModel进行单元测试。在构造函数中的应用程序有问题如何对在具有未知对象参数的构造函数的类中工作的方法进行单元测试(Junit 4)如何从列表框中获取每一项并将其存储到VB.NET中的多个文本框中
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Visual Studio 2017 15.7 下.NET Core

一. .NET Core相关主要内容 1. 大型. NET Core项目中缩短了智能感知25%时间。 2.C# 7.3 支持 3. ...我们改进了 c# 和 VB 项目的解决方案加载时间。 我们f# 及其工具进行了大量更新, 重点关注性能。 我们缩短了时间, 以便为大型. NET 核心项目启用智能感知25%。...我们进行了快速信息改进和新. NET 重构, 如转换for到-foreach并使私有字段readonly....测试资源管理器在测试运行期间有更多响应图标。 c++ 开发人员可以使用CodeLens 进行单元测试. 我们添加了 c++核心指南中执行项目的新规则。....当不需要解决方案或项目重新加载时, 我们Git 分支签出删除了阻止模式对话框。 在Git 中有一个选项可在 OpenSSL 和 SChannel 之间进行选择.

3K50

Visual Studio 2017 15.7 下.NET Core

一. .NET Core相关主要内容 1. 大型. NET Core项目中缩短了智能感知25%时间。 2.C# 7.3 支持 3. ...我们改进了 c# 和 VB 项目的解决方案加载时间。 我们f# 及其工具进行了大量更新, 重点关注性能。 我们缩短了时间, 以便为大型. NET 核心项目启用智能感知25%。...我们进行了快速信息改进和新. NET 重构, 如转换for到-foreach并使私有字段readonly....测试资源管理器在测试运行期间有更多响应图标。 c++ 开发人员可以使用CodeLens 进行单元测试. 我们添加了 c++核心指南中执行项目的新规则。....当不需要解决方案或项目重新加载时, 我们Git 分支签出删除了阻止模式对话框。 在Git 中有一个选项可在 OpenSSL 和 SChannel 之间进行选择.

3.2K80
  • 重温《单元测试艺术》,总结常用知识点

    项目进行单元测试好处非常容易理解:单元测试降低了 Bug 数量,缩短了上市时间,防止过度耦合设计。这些都是很好优势,但它还有更多与开发人员更直接相关优点。...6.1 Stub(存根) 一个存根(stub)是系统存在一个依赖(又或者协作者)可控制替代物。通过使用存根,你在测试代码无需直接处理这个依赖。...模拟对象创建到测试方式结束,这个模拟对象所有调用都会自动记录,保存供后来使用。...8.2 如何测试私有方法 私有方法通常比较难测试,不过你可以这么想:私有方法不会无缘无故地存在,最终在某个地方有公共方法会调用这个私有方法。...看到一个私有方法时候,你应该找到使用这个方法公共用例并这个公共用例进行测试。 如果一个私有方法真的值得进行测试,那么它也许应该设为公共,静态。有几种方式处理私有方法: 使方法成为公共方法。

    1.5K31

    VisualStudio单元测试

    这篇文章实践使用VisualStudio 2019进行单元测试。 在VisualStudio通常都会使用“测试资源管理器”进行单元测试。 ?...Live Unit Testing 是 Visual Studio 2017 引入一种技术。 进行代码更改时,它会自动执行单元测试。 实时单元测试: 让你更有信心地代码进行重构和更改。...填充码可用于替换对无法修改程序集(如 .NET 程序集)调用。 一般原则是,为在 Visual Studio 解决方案中进行调用使用存根,并为其他引用程序集调用使用填充码。...存根和填充码都可用于可通过程序集特性 InternalsVisibleToAttribute 访问内部类型。 私有方法。 如果方法签名所有类型都是可见,则填充码可替换对私有方法调用。...; } } 由于它依赖于DateTime.Now,而假设我们没办法更改这段代码,为了进行单元测试我们必须使用Shim破除DateTime.Now依赖。

    3.7K50

    .NET面试经典三问:什么是.NET?什么是.NET Framework?什么是.NET Core?

    C#就是为宣传.NET而创立,它直接集成于Visual Studio .NETVB也在.NET 1.0发布后进行支持, 所以这两门语言与.NET平台耦合度很高,并且.NET技术大多都是以C...比如我在vb写了一个针对String首字母大写扩展方法,将其编译后dll引用至C#项目中。..."不明确,这是因为在vb类名是不区分大小写。...] CLS类型、命名、事件、属性、数组等方面对语言进行了共性定义及规范。...答案是可以尝试,如用vb反射访问c#char*指针类型,即使vb没有char*这种等价指针类型,但mscorlib提供了针对指针类型 Pointer 包装类供其访问,可以运行时类携带类型名称看到其原本类型名

    96641

    从零开始针对 .NET 应用 DevOps 运营实践 - 运行环境搭建

    ):作为持续交付延伸,持续部署能够自动将最终代码部署到生产环境,完成整个 CI/CD 流程 虽然目前需求仅仅是为了实现持续集成,完成对于系统自动化代码检查、自动化单元测试,但是因为后续功能对于我们完整实施...DevOps 方法论也是必须,所以在这几篇博客内容,我也会完成对于后续功能实践分享 3.2、前期调研 与持续集成场景存在一些差异,我们在实际开发,并不会在新功能分支上按照每个开发人员再建立单独分支...因此,作为事实上开源 CI/CD 工具标准,毫无疑问选择 Jenkins,而对于代码自动化检查,结合我们需要实现私有化部署,满足多种开发语言支持、能够与 CI/CD 工具进行有效结合需求,这里最终选择是...SonarQube 由于历史原因,部门系统框架版本横跨了 VB.NET、.NET Framework 2.x,4.x 与 .NET Core,.NET 框架程序涵盖了 Web Form、MVC、Web...VS 2019 下载页面进行示例,在 Visual Studio 2019 工具这个内容块,找到生成工具这个下载,下载即可 ?

    82631

    如何写出优雅 Golang 代码

    ,当然严格遵循公有和私有代码划分是非常好做法,作者也建议各位开发者目中公有和私有的代码进行妥善划分。...模块拆分 我们既然已经介绍过了如何顶层项目的结构进行组织,接下来就会深入到项目的内部介绍 Go 语言对模块一些拆分方法。...如何控制待测试方法依赖模块是写单元测试时至关重要,控制依赖也就是目标函数依赖进行 Mock 消灭不确定性,为了减少每一个单元测试复杂度,我们需要: 尽可能减少目标方法依赖,让目标方法只依赖必要模块...组织方式 如何测试进行组织也是一个值得讨论的话题,Golang 单元测试文件和代码都是与源代码放在同一个目录下按照 package 进行组织,server.go 文件对应测试代码应该放在同一目录下...Mock 方法 项目中单元测试应该是稳定并且不依赖任何外部项目,它只是目中函数和方法测试,所以我们需要在单元测试所有的第三方不稳定依赖进行 Mock,也就是模拟这些第三方服务接口;除此之外

    1.6K30

    如何写出优雅 Golang 代码

    ,当然严格遵循公有和私有代码划分是非常好做法,作者也建议各位开发者目中公有和私有的代码进行妥善划分。...模块拆分 我们既然已经介绍过了如何顶层项目的结构进行组织,接下来就会深入到项目的内部介绍 Go 语言对模块一些拆分方法。... 如何控制待测试方法依赖模块是写单元测试时至关重要,控制依赖也就是目标函数依赖进行 Mock 消灭不确定性,为了减少每一个单元测试复杂度,我们需要: 尽可能减少目标方法依赖,让目标方法只依赖必要模块...组织方式 如何测试进行组织也是一个值得讨论的话题,Golang 单元测试文件和代码都是与源代码放在同一个目录下按照 package 进行组织,server.go 文件对应测试代码应该放在同一目录下...Mock 方法 项目中单元测试应该是稳定并且不依赖任何外部项目,它只是目中函数和方法测试,所以我们需要在单元测试所有的第三方不稳定依赖进行 Mock,也就是模拟这些第三方服务接口;除此之外

    1.1K30

    从零开始针对 .NET 应用 DevOps 运营实践 - 运行环境搭建

    ):作为持续交付延伸,持续部署能够自动将最终代码部署到生产环境,完成整个 CI/CD 流程 虽然目前需求仅仅是为了实现持续集成,完成对于系统自动化代码检查、自动化单元测试,但是因为后续功能对于我们完整实施...DevOps 方法论也是必须,所以在这几篇博客内容,我也会完成对于后续功能实践分享 3.2、前期调研 与持续集成场景存在一些差异,我们在实际开发,并不会在新功能分支上按照每个开发人员再建立单独分支...因此,作为事实上开源 CI/CD 工具标准,毫无疑问选择 Jenkins,而对于代码自动化检查,结合我们需要实现私有化部署,满足多种开发语言支持、能够与 CI/CD 工具进行有效结合需求,这里最终选择是...SonarQube 由于历史原因,部门系统框架版本横跨了 VB.NET、.NET Framework 2.x,4.x 与 .NET Core,.NET 框架程序涵盖了 Web Form、MVC、Web...VS 2019 下载页面进行示例,在 Visual Studio 2019 工具这个内容块,找到生成工具这个下载,下载即可 ?

    83431

    ASP.NET MVC 4 - 测试驱动 ASP.NET MVC

    图 2 解决方案结构示例 我建议将您控制器放置于一个单独 Visual Studio 项目中。有关如何轻松实现此建议信息,请参见 bit.ly/K4mF2B 上博客文章。...通过将您控制器放置于单独目中,您可以进一步将处于控制器逻辑与 UI 代码分离开来。结果就是您 Web 项目仅包含真正与 UI 相关代码。...在哪里放置您测试项目 在哪里放置您测试项目以及如何这些项目进行命名十分重要。在您开发复杂、企业级应用程序时,解决方案往往会变得相当大,因此,很难在解决方案资源管理器定位代码特定类或部分。...图 4 解决方案资源管理器测试项目 介绍针对您体系结构依赖关系注入 在您待测试代码遇到依赖关系前, n 层应用程序进行单元测试不会前进多远。...使用 StructureMap 配置依赖关系 在 ASP.NET MVC 实现 StructureMap 第一步是配置您依赖关系,以便 StructureMap 知道如何它们进行解析。

    5.4K70

    VB.NET“偷懒”技巧

    开发岗位,但偏偏给我第一份编程工作竟然是改VB.NET程序,VB是一种过气语言(各大招聘网站招聘广告中看就能看出来,100份招人最多有一、两份是提到VB),很多新程序员估计连Basic是什么都未必清楚...VB.NET需要依赖环境,而且一些必要dll文件没有放在该有的位置,另外,原程序员明明正确配置文件,竟然在“击鼓传花”式传递过程莫名越改越错,导致有用数据被认为是完全无用干脆删掉了。...1、充分利用VB.NET自身提供功能 比如下图是鼠标右键弹出界面,红色部分可以帮程序员很好了解程序函数如何定义,并了解整个项目中到底有多少个地方调用了该函数。...黄色部分需要装.NET Reflector反编译软件(网上有如何安装),当点击“转到定义”时,如果是VB函数,可看到源码。其实,我用它看不是VB源码,而是软件中被程序员自己编写dll文件。...如果不想让人在启动里面看到,也可以写成配置文件,然后用命令加载,写成任务计划,当系统启动时,触发任务,打开软件。 6.jpg 写任务计划示例: <?

    2.4K130

    C#一分钟浅谈:Visual Studio IDE 高级功能

    在现代软件开发,集成开发环境(IDE)扮演着至关重要角色。Visual Studio 是 Microsoft 推出一款功能强大 IDE,广泛应用于 .NET 开发,特别是 C# 项目。...本文将从初学者角度出发,逐步深入探讨 Visual Studio 一些高级功能,包括常见问题、易错点以及如何避免这些问题,并通过代码案例进行详细解释。1....安装过程,选择“.NET 桌面开发”工作负载,这将安装所有必要组件来支持 C# 开发。...手动重构代码不仅耗时,还容易引入新错误。解决方案Visual Studio 提供了多种代码重构工具,如重命名、提取方法、提取接口等。例如,提取方法可以帮助你将重复代码块提取到一个单独方法。...3.2 Live Unit Testing功能描述Live Unit Testing 是 Visual Studio 高级功能,它可以在你编写代码时自动运行单元测试,并实时显示测试结果。

    6110

    关于单元测试

    如果把这些内容统统外部“注入”,这样私有的逻辑就变公开了……但是这样难道没有过渡设计味道吗?”。 然后就想起来我在项目中推动单元测试经过。觉得还是应该总结一下比较好。...单元测试对重构帮助不如预期 正如前面所说,我目前负责目中,较大重构发生次数并不多。小规模重构确实有单元测试帮助我发现问题情况。但是,远不像我预期那么多。...而经常出问题代码,往往因为和平台关系太密切,而无法切割出来进行单元测试。 ASP.NET MVC在一开始设计时候就考虑了可测试性,因此,这一方面应该更好一些。...如果这个函数具有了变化和复用可能性,我们就应该将它抽象为一个独立对象,并且进行测试。这是一个更好设计,而不应该归入过度设计范畴。...因为,理论上重构过程不需要保持私有成员行为不变。但是,你单元测试又要求私有成员行为不变。这个其实就是我上文中提到单元测试影响了重构进行情况。

    77880

    【5min+】为你.NET应用进行一次全方位体检

    它所包含了.net体系可能会涉及到方方面面,比如C#小细节,AspnetCore,微服务.net知识等等。...所以,此时就需要咱们引入“单元测试”了。当一个方法被多个地方使用,过早该方法进行单元测试,将会大幅度减少bug产生。 在.NET Core中使用单元测试也很简单,直接新建一个测试项目就可以了。...Pipelines中新建一个Pipelines: [Pipelines] [x] 我这里选择是Github代码库,然后下一步进行选择,选择会有几个模板供您选择,您可以随意选择一个AspNet Core...在下面的图片中,表示了一个.NET Core程序进行“自动生成->测试->生成代码覆盖率”job,您可以根据您自身情况进行参考和更改: [x] [x] 然后提交该配置。...最后 说几个大家可能在单元测试过程可能涉及到几个小点: 有时候您会测试一个internal级别的类,但是当测试项目引用之后是没有办法找到该类,您可以通过将程序集标记为测试项目可见来进行测试: [

    62510

    通俗易懂,什么是.NET?什么是.NET Framework?什么是.NET Core?

    C#就是为宣传.NET而创立,它直接集成于Visual Studio .NETVB也在.NET 1.0发布后进行支持, 所以这两门语言与.NET平台耦合度很高,并且.NET技术大多都是以C...比如我在vb写了一个针对String首字母大写扩展方法,将其编译后dll引用至C#项目中。 在C#项目中,可以像自身代码一样正常使用来自vb这个dll扩展方法。...在非托管世界,可以通过代码手动进行释放,但在.NET,堆完全由CLR托管,也就是说GC堆是如何具体来释放呢?...,也就是新建项目中那些展示(如mvc5目/winform项目等等),具体表现为包含.vstemplate及一些定义关联文件这样母版文件。...、函数调用(入口)、ADO.NET命令(Sql查询语句...)

    2.7K63
    领券