千家信息网

Telerik DevCraft进行单元测试的方法步骤

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"Telerik DevCraft进行单元测试的方法步骤",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Telerik DevCraf
千家信息网最后更新 2026年11月02日Telerik DevCraft进行单元测试的方法步骤

这篇文章主要讲解了"Telerik DevCraft进行单元测试的方法步骤",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Telerik DevCraft进行单元测试的方法步骤"吧!

Telerik DevCraft包含一个完整的产品栈来构建您下一个Web、移动和桌面应用程序。它使用HTML和每个.NET平台的UI库,加快开发速度。Telerik DevCraft提供最完整的工具箱,用于构建现代和面向未来的业务应用程序,目前提供UI for ASP.NET MVC、Kendo UI、UI for ASP.NET AJAX、UI for WPF、UI for Xamarin、Reporting等众多控件。

根据调查显示,C#仍然是最受欢迎的编程语言之一,它功能强大,易于学习并且不断改进和发展。最近几年这个语言增加了新功能,新版本不断迭代--C# 7, C# 8, C# 9。

Progress Telerik产品始终与.NET世界中的最新的功能保持同步,C#9和JustMock也不例外。大多数新功能都易于在单元测试和模拟中使用,但是本文将为大家展示一些有趣的东西,以便您可以在单元测试中轻松使用C#功能。

  • 静态局部函数(C#8)

  • 异步方法

  • 记录

  • 初始化

  • 模式匹配

为了说明这些,我们将使用Foo类。

public class Foo{public Foo(){this.Bar = 10;this.DateTime = new DateTime(2021, 1, 1);}public int Bar { get; init; }public DateTime DateTime { get; init; }public bool IsInRange(int i) =>i is (>= 1 and <= 10) or (>= 100 and <= 200);}public record Person{public string LastName { get; }public string FirstName { get; }public Person(string first, string last) => (FirstName, LastName) = (first, last);}public record Teacher : Person{public string Subject { get; }public Teacher(string first, string last, string sub): base(first, last) => Subject = sub;}

注意:要运行示例,您需要从此处下载并安装JM。

1. 首先使用Mock.Local模拟静态功能

[TestMethod]

public void TestStaticLocal(){// Arrangevar sut = new Foo();// Here is how to mock the static function Mock.Local.Function.Arrange(sut, "MethodWithStaticLocal", "Add", Arg.Expr.AnyInt, Arg.Expr.AnyInt).Returns(1);// Actvar result = sut.MethodWithStaticLocal();// AssertMock.Assert(sut);Assert.AreNotEqual(12, result);}

2. 异步流

从C#8.0开始,您可以异步创建和使用流。 返回异步流的方法有三个细节:

  • 用async修饰符声明

  • 它返回一个IAsyncEnumerable

  • 该方法包含yield return语句,以返回异步流中的后续元素

在下面的示例中,您可以看到这种方法的示例以及如何进行模拟的示例:

[TestMethod]

public async Task TestAsyncEnumFromArray(){// Arrangevar expected = new int[] { 10, 20, 30 };Mock.Arrange(() => Foo.GetAsyncCollection()).Returns(expected.GetEnumerator().ToAsyncEnumerable());// Actvar result = Foo.GetAsyncCollection();// AssertMock.Assert();int index = 0;await foreach (var number in result){Assert.AreEqual(expected[index++], number);}}

3. 仅初始化设置器

仅Init的设置器提供一致的语法来初始化对象的成员,属性初始值设定项可清楚表明哪个值正在设置哪个属性,缺点是这些属性必须可设置。 从C#9.0开始,可以为属性和索引器创建init访问器,而不是设置访问器。

编写测试时如何模拟它? 使用JustMock的Mock.NonPublic.ArrangeSet方法。

[TestMethod]

public void TestInit(){// Arrange var fooMock = Mock.Create();bool properyInitCalled = false;Mock.NonPublic.ArrangeSet(fooMock, "Bar", 10).IgnoreInstance().DoInstead(() => properyInitCalled = true);// Act var foo = new Foo();// Assert Assert.IsTrue(properyInitCalled);}

或者

[TestMethod]

public void TestInit2(){// Arrange var fooMock = Mock.Create(Constructor.NotMocked);dynamic fooMockWrapper = Mock.NonPublic.Wrap(fooMock);Mock.NonPublic.Arrange(fooMockWrapper.Bar = 10).IgnoreInstance().MustBeCalled();// Act var foo = new Foo();// Assert Mock.NonPublic.Assert(fooMockWrapper.Bar = 10, Occurs.Once());}

4. 模式匹配

C#语言的另一个很棒的补充是模式匹配,这位C#开发人员提供了更多的创造力和灵活性!

正如文档所说,基本上您要查看给定的结构,然后根据其外观识别并确定其结构,然后就可以立即使用它。

为了向您展示如何使用InRange方法模拟这些功能,这是我们的模式匹配示例,然后是下面的测试:

public bool IsInRange(int i) =>i is (>= 1 and <= 10) or (>= 100 and <= 200);...[TestMethod]public void Mock_PatternMatchingTest(){// Arrangevar foo = Mock.Create(Behavior.CallOriginal);Mock.Arrange(() => foo.IsInRange(Arg.AnyInt)).Returns(true);// Actvar result20 = foo.IsInRange(20);var result150 = foo.IsInRange(150);//AssertAssert.AreEqual(true, result20);Assert.AreEqual(true, result150);}

我知道读取代码与运行代码并不相同,因此要使用它并使用示例,请按照以下步骤操作:

  • 下载JustMock

  • 安装它

  • 从这里下载项目

感谢各位的阅读,以上就是"Telerik DevCraft进行单元测试的方法步骤"的内容了,经过本文的学习后,相信大家对Telerik DevCraft进行单元测试的方法步骤这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

方法 测试 单元 示例 步骤 功能 属性 模式 学习 语言 不断 产品 代码 内容 应用程序 新功能 更多 程序 结构 静态 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司简介 上海睿民互联网科技有限公司 互联网科技资迅 互联网科技的 互联网科技与金融科技 天下捷融互联网科技 互联网汽车科技小镇 中国科技互联网公司收入 银川新华互联网科技职业技术培训学校图片 互联网金融科技展 洛阳共同富裕互联网科技有限公司 世界互联网领先科技成果获奖 卓翼科技产业互联网合作 互联网科技公司营业执照怎么办理 厦门江牛科技互联网 互联网科技年终奖 卡尔迅互联网科技有限公司 互联网科技接地气 艺电能源互联网科技有限公司招聘 福仕德教育科技互联网 互联网科技股有哪些 湖南洣水互联网科技有限公司扣款 剑昆互联网络科技有限公司临桂 字节跳动和互联网科技 互联网科技有哪些公司 互联网还是高科技吗 互联网科技公司有风险吗 哈尔滨屹滨互联网科技有限公司 健康食品互联网创新科技园项目 平安好医生打造互联网科技医疗
0