相关疑难解决方法(0)

如何在C#中模拟没有接口且没有虚拟方法的类?

我正在为别人的代码编写单元测试,我不允许修改.

说我有:

class BadClass
{
    public BadClass()
    {
        // the service isn't going to be running during testing
        // it also has no interface
        someFlag = AGloballyStoredService.getSomeFlag();
    }

    public bool someFlag;

}
Run Code Online (Sandbox Code Playgroud)

用于:

class AnotherBadClass
{
    public AnotherBadClass(BadClass badClass)
    {
        someFlag = badClass.someFlag;
    }
    public bool someFlag;
}
Run Code Online (Sandbox Code Playgroud)

说我想要测试:

public void AnotherBadClassConstructorTest()
{
    BadClass badClass = new BadClass();
    AnotherBadClass anotherBadClass = new AnotherBadClass(badClass);
    Assert.IsNotNull(anotherBadClass);
}
Run Code Online (Sandbox Code Playgroud)

我想模拟BadClass,但它没有接口,如果服务没有运行,它在构造函数中失败.

考虑到我无法修改我正在测试的代码,是否有一种直接的方法来使其工作?

如果归结为它,我可以告诉他们,他们必须让我修改现有的代码库或接受该模块的10%以下的覆盖率.

c# unit-testing

3
推荐指数
1
解决办法
2875
查看次数

标签 统计

c# ×1

unit-testing ×1