C# 在同一类中实现Moq单元测试和实际单元测试方法
需要在同一个测试类中实现Moq单元测试和实际单元测试,并借助一些配置文件键。 是否可以使用基于配置值分配的相同对象执行此操作C# 在同一类中实现Moq单元测试和实际单元测试方法,c#,unit-testing,moq,C#,Unit Testing,Moq,需要在同一个测试类中实现Moq单元测试和实际单元测试,并借助一些配置文件键。 是否可以使用基于配置值分配的相同对象执行此操作 表示如果配置文件键为“Moq”,则Moq单元测试将运行,如果不是,则实际单元测试将在同一测试类和同一方法中运行。可以,但可能不是最佳做法。 比如说, public class MyClass { IDependency _d; public MyClass(IDependency d) { _d = d; } } public clas
表示如果配置文件键为“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);
}
}
}
[TestClass]
公共类MyClassTests
{
我的班级_sut;
模拟(mockDependency);;
依赖(realdependence);;
[测试]
公共void Init()
{
var shouldUseMock=ConfigurationManager.AppSettings[“key”];
如果(应使用模拟)
{
_mockDependency=newmock();
_sut=新的MyClass(_mockDependency.Object)
}
其他的
{
_realDependency=新依赖项();
_sut=新的MyClass(_realDependency);
}
}
}
问题是根据不同的情况设定期望值,这使得测试类更难维护。您应该创建两个测试,一个是带有
mock
的真实单元测试,另一种是带有真实实现的集成测试 我不清楚你在问什么。我从来没有听说过Moq单元测试和“实际”单元测试之间的区别;你能详细说明一下吗?你应该更具体一些。我真的不知道你在说什么。对不起。意味着有两种方法可以实现单元测试1。使用某些框架模拟结果,我正在使用Moq。2.实际单元测试调用,直接调用数据库获取实际数据。我想在相同的测试方法中实现这两种方法,可以使用配置值进行管理。意思是如果我设置1,那么Moq单元测试应该发生,如果我设置2,那么实际的单元测试应该发生。所以第二个测试不是单元测试,而是集成测试。对不起,我可能错了。我们可以不用模拟就进行单元测试,对吗?因此,如果我们尝试运行测试,那么如果有任何数据库调用,那么它将进行调用以获取实时数据?正当如果我使用的是执行数据库调用的helper对象,那么我希望创建一个动态对象,该对象将在TestInitialize上初始化,其中设置了一个条件,以设置helperobject=new Mock();或helperobject=newhelperClass();哪个最小起订量是返回值还是实际值?