千家信息网

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

发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,这篇文章主要讲解了"Telerik DevCraft进行单元测试的方法步骤",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Telerik DevCraf
千家信息网最后更新 2025年02月03日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安全错误 数据库的锁怎样保障安全 青鸽网怎么无法连接服务器 天津放心软件开发服务值得推荐 网络安全为人民的一段话 c语言多次输入数据库 比奇网络技术前台电话 数据库汉字存储类型 oa办公室软件开发公司 阿里云服务器怎么设置默认配置 华为网络技术工程师辛不辛苦 如何实现数据库语言安全性 代理服务器不可用是什么意思 网络安全方案设计心得体会 全国扫黑办 网络安全 sql数据库如何查看是否激活 ntp -服务器 海外基金数据库 强安软件开发者 嵌入式 设计 软件开发 银行软件开发岗位的待遇 网络技术主要用于经济领域对吗 埃森哲上海软件开发工程师 冬奥会期间网络安全文章 甘肃网络安全宣传会 网络技术培训时间 我的世界新服务器在哪里 阿里云服务器怎么设置默认配置 刺刀 网络安全 农场游戏上海软件开发公司 如何进行网络安全的普及 4台服务器需要多大的ups供电
0