我想编写用于触发事件或向用户显示表单的C#代码的测试用例,例如:
private void CreateRecord_Click(object sender, EventArgs e)
{
try
{
this.InitiateRecording();
}
catch (BubbleUiException ex)
{
objLog.Error(TextRes.IDC_EShuttleError, ex);
MessageBox.Show(
ex.Message,
TextRes.IDC_EShuttleError,
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
catch (Exception ex)
{
objLog.Error("Error occurred", ex);
MessageBox.Show(
ex.Message,
TextRes.IDC_Error,
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
如何使用Mbunit为这类代码编写单元测试?
答案 0 :(得分:3)
“纯粹主义”的答案是,由于它是一种私有方法,因此不应进行单元测试,因为它是一个实现细节。您应该只测试公共API。
由于它是一个事件处理程序,您可能仍希望出于各种原因对其进行测试。正如目前所写,这将很难做到。事实上你有一个
this.InitiateRecording();
行表示您未正确实施关注点分离。您处理事件的类似乎也包含处理录制的代码。其次,您对MessageBox.Show进行了硬编码调用,这将使测试变得困难,因为您的测试无法以自动,独立的方式运行。
我建议:
答案 1 :(得分:0)
测试:
this.InitiateRecording()
被称为BubbleUiException
this.InitiateRecording()
Exception
时强制BubbleUiException
this.InitiateRecording()
MessageBox.Show
,以便测试它会在抛出异常时打印出您所期望的内容。objLog.Error
。{/ li>
醇>
您可以假设您的点击事件有效(在点击控件时调用该方法),因为Microsoft已对此进行了测试。