Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何对复杂的电子表格行为进行单元测试?_C#_Unit Testing_Spreadsheet - Fatal编程技术网

C# 如何对复杂的电子表格行为进行单元测试?

C# 如何对复杂的电子表格行为进行单元测试?,c#,unit-testing,spreadsheet,C#,Unit Testing,Spreadsheet,我有一个C#项目,它将大部分复杂行为实现为用户交互的电子表格的事件处理程序 我熟悉测试代码,但我不确定如何测试电子表格的复杂行为(如在用户更改单元格值时添加和删除行或调用第三方组件)。不仅编码行为与电子表格行为纠缠在一起,而且在以编程方式更改其值时,我也无法触发电子表格事件。我不知道该嘲笑什么,因为它也没有真正分成不同的类 WinForms是否有Selenium或其他方法可以做到这一点?如果其他人遇到这种情况,我最终使用的是基本相同的或取决于您如何看待它的东西。每个电子表格都由一个适配器包装,该

我有一个C#项目,它将大部分复杂行为实现为用户交互的电子表格的事件处理程序

我熟悉测试代码,但我不确定如何测试电子表格的复杂行为(如在用户更改单元格值时添加和删除行或调用第三方组件)。不仅编码行为与电子表格行为纠缠在一起,而且在以编程方式更改其值时,我也无法触发电子表格事件。我不知道该嘲笑什么,因为它也没有真正分成不同的类


WinForms是否有Selenium或其他方法可以做到这一点?

如果其他人遇到这种情况,我最终使用的是基本相同的或取决于您如何看待它的东西。每个电子表格都由一个适配器包装,该适配器格式化电子表格并与代码通信。代码告诉中介显示一些域对象,并填充相应的单元格并触发相应的事件(CellEndEdit等)。用户修改电子表格后,中介将生成的域对象提供给代码。单元测试验证它可以正确地读写域对象,并在代码对其执行操作时触发正确的事件。其他测试验证,当用户将正确的数据放入正确的单元格时,生成的域对象具有正确的数据。这是额外的工作,但现在可以使行为依赖于中介而不是电子表格。

我不确定,但这可能会对您需要首先重构代码以使其可测试有所帮助。如果它“没有真正分解成类”,那么它的编写就很糟糕。我同意它需要工作,并且我一直在重构成类,但是如果没有一套好的自动化测试,提取更复杂的行为是困难和危险的。