val*_*lov 0 .net c# wpf unit-testing accessor
我必须在我的应用程序中编写单元测试,但我遇到了问题.我正在使用C#和.NET 4.在我的测试中,我无法访问类的私有属性和方法,所以我在单元测试中为每个类使用自动生成的Accessors但是......
我的Accessor类的构造函数不接受它们的参数.例:
class SearchControl(bool isLogged, MainWindow mainWindow);
class MainWindow();
Run Code Online (Sandbox Code Playgroud)
要创建SearchControl类型的对象,您需要传递mainWindow对象.因此,如果我用Accessor类创建它,我无法访问私有方法和属性,我无法测试它们.
MainWindow mainWindow = new MainWindow();
SearchControl serchControl = new SearchControl(false, mainWindow);
Run Code Online (Sandbox Code Playgroud)
我必须使用Accessor clasees,但是当我这样做时,我的代码用红色加下划线,Visual Studio说不能接受参数.为什么,当我传递相同类型的参数时.如果我再次将MainClass对象传递给SearchControl_Accessor对象,我无法访问MainClass中的propeerties.所以带有访问器的代码如下所示:
MainWindow_Accessor mainWindow = new MainWindiow_Accessor();
SearchControl_Accessor searchControl = new SearchControl_Accessor(false, mainWindow);
Run Code Online (Sandbox Code Playgroud)
任何人都知道什么是错的,我必须做些什么来解决它.谢谢 :)
如果你必须对私有方法进行单元测试,那么类设计可能很难开始?我(有点虚弱,我承认)理解是"外部世界"不应该关心对象的私有方法 - 只是它是否正确地写在框中.私有方法不是"合同"的一部分 - 它们的实现,返回类型等都可以改变,公共API是重要的.
在私有方法失败的情况下,您的对象的公共方法可以在什么情况下通过测试?如果可能的话,那么:
或者它是不可能的,但是你想测试私有方法以确定哪一个导致某些公共方法出乎意料地行为?
如果是这种情况,它可能表明:
归档时间: |
|
查看次数: |
5554 次 |
最近记录: |