C# 断言使用MSTEST调用的方法

C# 断言使用MSTEST调用的方法,c#,unit-testing,mstest,C#,Unit Testing,Mstest,我试图测试的不是状态,而是一些代码的行为。如果调用了某个方法,我可以使用MSTest断言吗?我可以使用模拟框架吗 特别是现在,我想检查私有对象是否被实例化,而不必为了测试而强制将其公开,但是检查是否调用了任何方法的解决方案对于未来的需要来说是非常好的:)而不是测试您想要真正测试方法行为的方法。这意味着看一看您的方法做了什么,并编写一个测试,以确保它所更改的数据确实发生了更改。例如: public void Bigmethod() { newUpCollections(); Creat

我试图测试的不是状态,而是一些代码的行为。如果调用了某个方法,我可以使用MSTest断言吗?我可以使用模拟框架吗


特别是现在,我想检查私有对象是否被实例化,而不必为了测试而强制将其公开,但是检查是否调用了任何方法的解决方案对于未来的需要来说是非常好的:)

而不是测试您想要真正测试方法行为的方法。这意味着看一看您的方法做了什么,并编写一个测试,以确保它所更改的数据确实发生了更改。例如:

public void Bigmethod()
{
   newUpCollections();
   CreateDatabaseConnection();
   FlagBadData();
}
如果要验证newUpCollections是否有效:

[TEST]
public void BigMethod_WhenCalled_RecreatesCollections()
{
   BigMethod()

   Assert.IsNotNull(Class.Collections);
}

如果您的方法没有任何改变任何东西的行为,您可能不需要测试它,甚至可能不需要在软件中使用它。那么,看看您的方法,它正在更改哪些数据,您可以监视这些数据是否真的在更改吗?

为什么要测试是否调用了私有方法?为什么还要在乎呢?这是一个实现细节。您想要进行单元测试的是,给定一些特定的输入,您的公共生成预期的输出。我的意思是,今天您的公共方法调用私有方法,明天调用Win32不安全函数,后天调用托管在地球另一端的web服务。只要public方法的行为符合预期,这并不重要。这就是你应该测试的。另一方面,如果您想单独对公共方法进行单元测试,那么所有依赖项都应该被模拟。@DarinDimitrov是对的,您想做的是
太多
实现细节。如果你能给出一小部分代码和你想要测试的内容,那么可能会更清楚。关于否决票,我不知道。我宁愿说这是一个合理的问题