我正在为别人的代码编写单元测试,我不允许修改.
说我有:
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%以下的覆盖率.