TDD:MS自带的单元测试 之 线程模型和执行顺序

背景

我一直在呼喊“不要靠假设编程”,可是我却常常这么做。我用单元测试就是一种基于假设进行编程的反面教材,今天就下决心弄明白它。

主要想弄明白两个问题:

    1. 执行的所有单元测试方法的线程模型,是单线程?是多线程?
    2. 执行的一个类型的所有单元测试方法会创建一个实例?还是一个单元测试方法创建一个实例?
    3. 执行的所有单元测试方法的执行顺序,哪些是随机?哪些是固定?

实验

实验材料

实验结果

 1 第1步,AssemblyInitialize in Thread:16,the unittest hashcode is:
 2 第2步,单元测试类C__ClassInitialize in Thread:16,the unittest hashcode is:
 3 第3步,单元测试类C__TestInitialize in Thread:16,the unittest hashcode is:55310967
 4 第4步,单元测试类C__单元测试方法C1 in Thread:16,the unittest hashcode is:55310967
 5 第5步,单元测试类C__TestCleanup in Thread:16,the unittest hashcode is:55310967
 6 第6步,单元测试类C__TestInitialize in Thread:16,the unittest hashcode is:16887489
 7 第7步,单元测试类C__单元测试方法C2 in Thread:16,the unittest hashcode is:16887489
 8 第8步,单元测试类C__TestCleanup in Thread:16,the unittest hashcode is:16887489
 9 第9步,单元测试类B__ClassInitialize in Thread:16,the unittest hashcode is:
10 第10步,单元测试类B__TestInitialize in Thread:16,the unittest hashcode is:13872596
11 第11步,单元测试类B__单元测试方法B1 in Thread:16,the unittest hashcode is:13872596
12 第12步,单元测试类B__TestCleanup in Thread:16,the unittest hashcode is:13872596
13 第13步,单元测试类B__TestInitialize in Thread:16,the unittest hashcode is:17876636
14 第14步,单元测试类B__单元测试方法B2 in Thread:16,the unittest hashcode is:17876636
15 第15步,单元测试类B__TestCleanup in Thread:16,the unittest hashcode is:17876636
16 第16步,单元测试类A__ClassInitialize in Thread:16,the unittest hashcode is:
17 第17步,单元测试类A__TestInitialize in Thread:16,the unittest hashcode is:45630738
18 第18步,单元测试类A__单元测试方法A1 in Thread:16,the unittest hashcode is:45630738
19 第19步,单元测试类A__TestCleanup in Thread:16,the unittest hashcode is:45630738
20 第20步,单元测试类A__TestInitialize in Thread:16,the unittest hashcode is:34828481
21 第21步,单元测试类A__单元测试方法A2 in Thread:16,the unittest hashcode is:34828481
22 第22步,单元测试类A__TestCleanup in Thread:16,the unittest hashcode is:34828481
23 第23步,单元测试类C__ClassCleanup in Thread:16,the unittest hashcode is:
24 第24步,单元测试类B__ClassCleanup in Thread:16,the unittest hashcode is:
25 第25步,单元测试类A__ClassCleanup in Thread:16,the unittest hashcode is:
26 第26步,AssemblyCleanup in Thread:16,the unittest hashcode is:

实验结论

    1. 单线程执行。
    2. 每个单元测试方法都会创建一个实例。
    3. [AssemblyInitialize]最先执行。
    4. [AssemblyCleanup]最后执行。
    5. [TestInitialize]在每个单元测试方法执行之前都会执行。
    6. [TestCleanup]在每个单元测试方法执行之后都会执行。
    7. [ClassInitialize]在实例该单元测试类的第一个实例时执行。
    8. [ClassCleanup]在[AssemblyCleanup]之前执行,执行顺序与[ClassInitialize]相反。

备注

还有两个问题没有得出结论:一、单元测试类型的执行顺序;二、单元测试方法的执行顺序。好在单元测试最好不要依赖这个顺序,因此我就不做实验了。

 

转载于:https://www.cnblogs.com/happyframework/archive/2013/05/03/3055027.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/360759.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bat文件名操作_Excel按文件名制作目录,你复制粘贴花一小时,同事只要十秒搞定...

Excel有个特殊操作,那就是对文件夹中上百个文件,用Excel按照文件名制作目录,我们只需要点击对于的超链接就可以快速打开对于的文件。如上图所示,我们的文件夹中包含有26个视频和Excel文件,因为文件数量过多所以我们需要…

整数返回poj1005——I Think I Need a Houseboat

这两天一直在研究整数返回之类的问题,上午正好有机会和大家讨论一下. 原题: Description Fred Mapper is considering purchasing some land in Louisiana to build his house on. In the process of investigating the land, he learned that the state of Louisia…

偷窥JCache API(JSR 107)

这篇文章从较高的层次介绍了JCache API,并提供了一个预告片–刚够您(希望)开始对此发痒;-) 在这篇文章中...。 JCache概述 JCache API,实现 JCache API支持的(Java)平台 快速了解Oracle Coh…

canvas 圆角矩形填充_一篇文章让你学会你最“害怕”的Canvas,太有意思了

Canvas画布 基本用法<canvas idcanvas width"150" height"150"></canvas> <canvas>看起来跟img标签有点像&#xff0c;唯一不同的是它没有src属性和alt属性。实际上&#xff0c;canvas标签只有两个属性:width和height。 如果没有设置宽度…

abaqus单位_ANSYS和ABAQUS哪个好,一个例子告诉你

分别用ANSYS和ABAQUS来分析同一个题目并考察其异同点。【问题】一根悬臂梁&#xff0c;长200mm,截面是30mm*20mm的矩形(高度方向是20mm)。该梁左端固定&#xff0c;在其上面施加向下的分布力系&#xff0c;载荷集度是0.6Mpa.已知材料使用低碳钢&#xff0c;弹性模量是200GPA&am…

模型微调入门介绍一

备注&#xff1a;模型微调系列的博客部分内容来源于极客时间大模型微调训练营素材&#xff0c;撰写模型微调一系列博客&#xff0c;主要是期望把训练营的内容内化成自己的知识&#xff0c;我自己写的这一系列博客除了采纳部分训练营的内容外&#xff0c;还会扩展细化某些具体细…

npp夜光数据介绍 viirs_科研成果快报第177期:中国地区长时序AVHRR气溶胶数据的主要问题: 气溶胶反演频次与重污染天气...

中国地区长时序AVHRR气溶胶数据的主要问题&#xff1a;气溶胶反演频次与重污染天气A critical view of long-term AVHRR aerosol data record in China: Retrieval frequency and heavy pollution成果信息Minghui Tao, Rong Li, Lili Wang et al. (2020)A critical view of lon…

使用Eclipse创建一个Android程序方法

要编写Android程序&#xff0c;需要安装JDK、Eclipse和Android SDK。 Android SDK的安装路径不要在program file或program file(x86)下&#xff0c;否则在debug时会碰很奇怪的问题。最好直接放在C:\Android下。&#xff08;如果非要放在Program files下也可以&#xff0c;在ecl…

如何使用Hibernate批处理DELETE语句

介绍 在我以前的文章中 &#xff0c;我解释了批处理INSERT和UPDATE语句所需的Hibernate配置。 这篇文章将继续本主题的DELETE语句批处理。 领域模型实体 我们将从以下实体模型开始&#xff1a; Post实体与Comment具有一对多关联&#xff0c;并且与PostDetails实体具有一对一…

蓝点linux_新闻速读 gt; Windows 10 的 Linux 内核将像驱动程序一样由微软更新服务进行更新 | Linux 中国...

本文字数&#xff1a;3252&#xff0c;阅读时长大约&#xff1a;4 分钟导读&#xff1a;• Ubuntu 发行商 Canonical 将参加微软欧洲虚拟开源峰会 • 树莓派支持 Vulkan 最新进展&#xff1a;通过 70000 项测试 • 谷歌浏览器开始隐藏 URL 详细路径&#xff0c;未来地址栏将只显…

struts2-通配符和动态方法调用

通配符举例--BookAction 1 public class BookAction extends ActionSupport {2 3 public String execute() throws Exception {4 System.out.println("BookAction ********** execute()");5 return null;6 }7 /*8 * 显示图书添加页…

JavaFX技巧18:路径剪切

我最近注意到&#xff0c;我致力于ControlsFX项目的PopOver控件无法正确剪切其内容。 当我为FlexCalendarFX框架开发手风琴弹出窗口时&#xff0c;这一点变得显而易见。 每当最后一个标题窗格扩展时&#xff0c;其底角不再是圆角而是正方形。 在将红色矩形作为内容放置到标题窗…

关于erlang的套接字编程

套接字编程即熟悉的Socket编程&#xff0c;根据传输层协议&#xff0c;可分为&#xff1a;UDP协议和TCP协议.下面写一个简单的例子&#xff0c;再重新认识下它&#xff1a; 1.在同一主机节点下启动两个Erlang节点. a).在第一个Erlang节点下&#xff0c;打开端口为1234的UDP套接…

kotlin 添加第一个 集合_Flutter开发必学Dart语法篇之集合操作符函数与源码分析...

简述:在上一篇文章中&#xff0c;我们全面地分析了常用集合的使用以及集合部分源码的分析。那么这一节讲点更实用的内容&#xff0c;绝对可以提高你的Flutter开发效率的函数&#xff0c;那就是集合中常用的操作符函数。这次说的内容的比较简单就是怎么用&#xff0c;以及源码内…

在Java中确定文件类型

以编程方式确定文件的类型可能非常棘手&#xff0c;并且已经提出并实现了许多基于内容的文件标识方法。 Java中有几种可用于检测文件类型的实现&#xff0c;其中大多数很大程度上或完全基于文件的扩展名。 这篇文章介绍了Java中最常见的文件类型检测实现。 本文介绍了几种在Ja…

程序员编程艺术第十一章:最长公共子序列(LCS)问题

程序员编程艺术第十一章&#xff1a;最长公共子序列(LCS)问题 0、前言 程序员编程艺术系列重新开始创作了&#xff08;前十章&#xff0c;请参考程序员编程艺术第一~十章集锦与总结&#xff09;。回顾之前的前十章&#xff0c;有些代码是值得商榷的&#xff0c;因当时的代码只顾…

gateway 过滤器执行顺序_Gateway网关源码解析—路由(1.1)之RouteDefinitionLocator一览...

一、概述本文主要对 路由定义定位器 RouteDefinitionLocator 做整体的认识。在 《Spring-Cloud-Gateway 源码解析 —— 网关初始化》 中&#xff0c;我们看到路由相关的组件 RouteDefinitionLocator / RouteLocator 的初始化。涉及到的类比较多&#xff0c;我们用下图重新梳理下…

ERP开发中应用字符串解析实现界面翻译智能化

ERP中要实现界面多语言的功能&#xff0c;则要对各种情况的字符串进行处理并作出翻译。有些字符串的翻译是有规律可行的&#xff0c;遵循相应的模板模式&#xff0c;解析字符串&#xff0c;可以实现机器翻译的效果。 请看帐套数据库表的设计ADCOMP CREATE TABLE dbo.ADCOMP(REC…

参数详解 复制进程_如何优化PostgreSQL逻辑复制

How to Optimize PostgreSQL Logical Replication逻辑复制( Logical Replication )或 Pglogical 是表级别的复制。两者都是基于 WAL 的复制机制&#xff0c;允许在两个实例之间复制指定表的WAL 。这两个看起来让人迷惑&#xff0c;到底有什么区别呢&#xff1f; Logical Replic…

Android Studio使用说明

声明: 本博客文章原创类别的均为个人原创&#xff0c;版权所有。转载请注明出处: http://blog.csdn.net/ml3947,另外本人的个人博客:http://www.wjfxgame.com。 凌晨的Google I/O大会上&#xff0c;宣布了Android Studio&#xff0c;引起了现场开发者的一片欢呼。那么&#x…