gpt4 book ai didi

c# - 无效方法 C# 的单元测试

转载 作者:太空宇宙 更新时间:2023-11-03 12:28:54 24 4
gpt4 key购买 nike

我正在尝试为带有 void 的方法编写单元测试。但是,我找不到任何示例或明确的答案。以下是我在我的程序中使用的方法,我想为此编写一个单元测试。任何人都可以在这方面帮助我。提前致谢。

    //method for disable all comboBoxes
private void comboDisable()
{
foreach (var j in this.Controls)
{
if (j.GetType().Equals(typeof(ComboBox)))
{
ComboBox cmb = j as ComboBox;
cmb.Enabled = false;
}
}
}

最佳答案

如前所述,单元测试通常针对应用程序逻辑公共(public)方法,而不是 UI 相关方法。

如果你真的坚持要测试你的方法,你应该遵循以下步骤:

1) 设置阶段 - 这是一个初始化测试上下文的阶段。在您初始化和打开包含组合框的表单的情况下

2) 拆除阶段 - 这是一个让事情就好像您的测试从未运行过一样的阶段。例如。关闭并在您的表单中处理

3) 实际测试 - 获取一些组合框实例,启用它们,调用你的方法,检查所有复选框是否被禁用

一些(伪)代码使用 NUnit framework attributes (未经测试,只是为了让您入门):

[TestFixture]
public class YourFormTests
{
private Form frm;

[OneTimeSetUp]
public void SetUp()
{
frm = new Form();
frm.Show();
}

[OneTimeSetup]
public void TearDown()
{
frm?.Close();
frm?.Dispose();
}

[Test]
public void TestComboDisabled()
{
frm.cmbSomeName.Enabled = true;
frm.comboDisable();
Assert.IsFalse(frm.cmbSomeName.Enabled, "Combo is not disabled");
}
}

这假设您的方法是公开的并且还测试了组合框。理论上,你可以dynamically invoke a private method , 但这真的很难看,不推荐(方法重命名产生了 TargetInvocationException 而不是编译错误)。

这应该提供单元测试创​​建的基本思路,但您真的应该 read the basics .

关于c# - 无效方法 C# 的单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43555298/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com