在同一解决方案下创立单元测试项目
这个步骤可以看微软官方文档中的创立单元测试部分
需要注意的是:
- 在创建测试项目时,我添加的是单元测试项目(.NET framework)。
- 在将待测项目添加到测试项目的引用中之后,还需要添加引用项:System.Windows.Forms。否则在测试项目中无法使用winforms控件。
编写测试用例
单元测试项目(.NET framework)的结构与.NET framework项目的结构较为相似,大致是:
- 项目命名空间
- 测试类
- 测试方法
- 测试类
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using WindowsFormsApp1;
using System.Windows.Forms;
using System.Reflection.Emit;
namespace UnitTestProject1
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestButtonMethod()
{
// Arrange
Form1 form = new Form1();
form.Show();
// 获取按钮和标签
var button = form.Controls["button1"] as Button;
var textBox = form.Controls["textBox1"] as TextBox;
// 确保控件不为空并且是正确类型
if (button != null && textBox != null)
{
// 模拟按钮点击
button.PerformClick();
// 验证标签文本是否已更改
Assert.AreEqual("Hello World", textBox.Text);
}
else
{
Assert.Fail("Button or textBox not found.");
}
}
}
}
编写测试用例主要就是定义不同的测试方法。
需要注意的是:
- 在写单元测试的.cs文件里不仅要写
using WindowsFormsApp1(待测项目namespace);
,也要写using System.Windows.Forms;
。 - 在 WinForms 中,如果是在视图界面拖拽到窗体上的控件,其声明自动生成在Designer.cs文件里,一般为
private
类型。这时就不能直接在测试项目中访问。而通过form.Controls["button1"]
就可以成功获取控件。 var button = form.Controls["button1"] as Button;
这是一个类型转换的语法,利用了 as 关键字。as 是 C# 中的一个操作符,用于将对象转换为指定类型。如果转换成功,则返回目标类型的实例;如果转换失败,则返回 null,而不会抛出异常。
运行单元测试
这个步骤可以看微软官方文档中的运行单元测试部分
标签:控件,form,单元测试,System,winforms,using,msTest,textBox From: https://www.cnblogs.com/ban-boi-making-dinner/p/18630262