我目前正在使用最新的Visual Studio 2017 Release Candidate来创建.Net Standard 1.6库.我正在使用xUnit对我的代码进行单元测试,并且想知道你是否仍然可以在VS2017中测试内部方法.
我记得你可以在VS2015中使用一行AssemblyInfo.cs类来使指定的项目能够看到内部方法
[assembly:InternalsVisibleTo("MyTests")]
Run Code Online (Sandbox Code Playgroud)
由于VS2017 .Net标准项目中没有AssemblyInfo.cs类,我想知道您是否还可以对内部方法进行单元测试?
我们将所有单元测试都放在他们自己的项目中.我们发现我们必须将某些类公开而不是内部仅用于单元测试.无论如何都要避免这样做.通过将类公开而不是密封来实现内存含义是什么?
我想写一个类库,它为我创建一个复杂的对象,但应该尽可能少地暴露.我希望它被包含到其他项目中,我只有一个调用这个库,例如返回一个内部创建的类的对象.我不想让其他人明确地创建这些对象,但我仍然想为这个类库创建一个测试项目.
例如:
var result = Manager.Instance.Create(definition)
Run Code Online (Sandbox Code Playgroud)
这应该是对类库的唯一访问.
基于definition参数,它使用不同的子类来创建请求的实例并相应地设置其属性.因此,我想通过测试以某种方式确保整个创建过程运行良好.但是因为我也不想暴露结果对象的非常少的内部属性,所以我不能仅使用这种公共访问方法进行测试,因为我没有任何属性可以断言.
我知道你不应该测试内部机制,它通常是糟糕的设计,我也正在阅读这篇文章,但是没有任何方法可以创建一个库加单元测试项目,也许之后限制访问这个类?用包装纸什么的?
有没有办法从不同的项目访问设置文件?例如,我有一个包含2个项目的解决方案(让我们称之为Proj1和Proj2).我想从Proj1中的Program.cs访问Proj2的应用程序设置.这可能吗?
在新的Visual Studio 2017 .csproj项目文件中从AssemblyInfo放置InternalsVisibleTo的位置?
我有很多内部定义的方法,如下所示:
internal static string GetAJobShaNaNaNaShaNaNaNaNaNa(string Silhouettes)
Run Code Online (Sandbox Code Playgroud)
但是,为了从添加到解决方案的测试项目中调用它们,我需要将其访问修饰符从内部更改为公共.
是否有一种非常繁琐的方法可以将这些方法公开用于测试,但仍然是内部的?
c# ×5
unit-testing ×4
internal ×2
.net ×1
assemblyinfo ×1
csproj ×1
msbuild ×1
nunit ×1
scope ×1
test-project ×1
testing ×1
wrapper ×1