我是单元测试的新手,我正在试图弄清楚是否应该开始使用更多的"内部"访问修饰符.我知道如果我们使用'internal'并设置汇编变量'InternalsVisibleTo',我们可以测试我们不想从测试项目声明公共的函数.这让我觉得我应该总是使用'内部',因为至少每个项目(应该?)都有它自己的测试项目.你们能告诉我为什么不这样做吗?我什么时候应该使用'私人'?
由于dotnet核心移回到.csproj格式,因此有一个新的自动生成MyProject.AssemblyInfo.cs,其中包含.
[assembly: AssemblyCompany("MyProject")]
[assembly: AssemblyVersion("1.0.0.0")]
Run Code Online (Sandbox Code Playgroud)
请注意,每次构建时都会自动重新生成.以前该文件位于/ obj /目录中,现在它似乎只在内存中,因为在磁盘上找不到该文件并且单击错误消息不会打开任何文件.
由于它们在那里定义,我无法在经典中定义它们AssemblyInfo.cs.
我在哪里/如何定义项目的公司和版本?
我们将所有单元测试都放在他们自己的项目中.我们发现我们必须将某些类公开而不是内部仅用于单元测试.无论如何都要避免这样做.通过将类公开而不是密封来实现内存含义是什么?
假设我有一个类"ClassA",它依赖于类"ClassB"(注入到ClassA的构造函数中).我想模拟ClassB,以便我可以单独测试ClassA.这两个类都是内部的.
如果我错了,请纠正我,但看起来Moq只能模拟一个类,如果它是公共的,它有一个公共无参数构造函数,并且要模拟的方法是public virtual.我真的不想让这些课程公开可见.我错过了Moq的东西,还是不适合我想做的事情?
我想我可以创建一个ClassB实现的接口(比如"IClassB"),将其注入ClassA,然后模拟接口.ClassB仍然可以是内部的(虽然我意识到接口方法必须是公共的).虽然这可行,但我对创建大量接口感到不安,其唯一目的是支持单元测试模拟.思考?