wai*_*rit 4 c# unit-testing .net-core
我需要对xUnit使用的方法进行单元测试Assembly,特别是使用参数调用Assembly.GetEntryAssembly().
但不幸的是,在单元测试项目中,入口组件似乎testhost不是我的测试项目.这样我就无法搜索我的测试项目.那是否意味着我无法测试这种方法?还是另一种方式?
并非所有代码都应该进行测试.将您使用的代码解压缩Assembly.GetEntryAssembly()到一个单独的组件中,如下所示:
public interface IAssemblyProvider
{
Assembly GetEntryAssembly();
}
public class AssemlbyProvider : IAssemblyProvider
{
public Assembly GetEntryAssembly()
{
return Assembly.GetEntryAssembly();
}
}
Run Code Online (Sandbox Code Playgroud)
并在代码中使用此抽象.无需测试这种方法 - 我们知道它有效,这是.Net框架的一部分.然后您要测试的代码应该使用IAssemblyProvider,因此您可以使用存根替换它:
// should only be visible in test project
internal class StubAssemlbyProvider : IAssemblyProvider
{
public Assembly GetEntryAssembly()
{
return typeof(MyClassInEntryAssembly).Assembly;
}
}
Run Code Online (Sandbox Code Playgroud)
这样您的代码就会被测试,但您不会测试.Net框架代码.