-2
需要在一些配置文件键的帮助下,在相同的测试类中执行Moq单元测试和实际单元测试。 是否可以使用基于配置值分配的相同对象执行此操作?实现相同类别的Moq单元测试和实际单元测试方法
意思是如果配置文件键是“Moq”,那么Moq单元测试将运行,如果不是,实际单元测试将以相同的测试类和相同的方法运行。
需要在一些配置文件键的帮助下,在相同的测试类中执行Moq单元测试和实际单元测试。 是否可以使用基于配置值分配的相同对象执行此操作?实现相同类别的Moq单元测试和实际单元测试方法
意思是如果配置文件键是“Moq”,那么Moq单元测试将运行,如果不是,实际单元测试将以相同的测试类和相同的方法运行。
是的,你可以,但可能这不是最好的做法。 例如,
public class MyClass
{
IDependency _d;
public MyClass(IDependency d)
{
_d = d;
}
}
public class Dependency : IDependency
{
}
在测试类,我能有这样的事情:
[TestClass]
public class MyClassTests
{
MyClass _sut;
Mock<IDependency> _mockDependency;
Dependency _realDependency;
[TestInit]
public void Init()
{
var shouldUseMock = ConfigurationManager.AppSettings["key"];
if(shouldUseMock)
{
_mockDependency = new Mock<IDependency>();
_sut = new MyClass(_mockDependency.Object)
}
else
{
_realDependency = new Dependency();
_sut = new MyClass(_realDependency);
}
}
}
的问题将根据不同情况来设定的预期,它使测试类更难保持。您应该创建两个测试,一个用mock
进行实际单元测试,另一个用真正的实现进行集成测试。
我不清楚你在问什么。我从来没有听说过Moq单元测试和“实际”单元测试之间的区别,你能详细说明一下吗? –
你应该更具体。我真的不知道你在说什么。 –
对不起。意思是有两种方法可以实现单元测试 1.使用某些框架,我正在使用的Moq来嘲笑结果。 2.实际单元测试调用,它将直接调用数据库来获取实际数据。 我想实现两个相同的测试方法,可以使用配置值进行管理。 意思是如果我设置1,那么Moq单元测试应该发生并且 如果我设置2实际单元测试应该发生。 – ashwinrajagopal