junit测试类叫什么名字_使用Junit测试名称

junit测试类叫什么名字

命名测试

当我们创建Junit测试时,通常没有方法名称的实际使用。 Junit运行器使用反射来发现测试方法,并且从版本4开始,您不再被限制以test开始方法的名称。 测试方法的名称用于文档目的。

人们遵循不同的风格。 您可以使用给定的given_Something_when_Something_then_Something样式命名测试。 其他学校开始了与世界的方法的名称should来描述被测对象“应该”做的。 我真的不明白为什么这比用test开头方法的名称要好得多。 如果所有方法都以相同的前缀开头,那么这仅仅是噪声。 这些天来,我倾向于将这些方法命名为关于SUT功能的简单陈述。

如何访问测试名称?

从技术上讲,只要名称是唯一的,您就可以自由命名方法。 测试中通常不使用该名称,并且测试结果不应取决于测试方法的实际名称。 即使Junit支持一种访问方法名称的方法。

如果您有Junit规则

@Rule
public TestName name = new TestName();

您可以在测试中引用对象name ,获得实际方法的名称为

String testName = name.getMethodName();

我们可以用它做什么?

有时,被测单元会创建一些巨大的结构,可以序列化为二进制或文本文件。 通常的做法是运行一次测试,检查结果文件,如果可以,则将其保存以供以后比较。 以后的测试执行将实际结果与开发人员保存并检查的结果进行比较。

在集成测试的情况下,如果对外部系统进行打桩,并且可以从某些本地测试数据文件中获取其响应,而不用查询外部服务,则可以使用类似的方案。

在这种情况下,可以使用测试名称来创建存储测试数据的文件名。 测试的名称是唯一的,可以轻松地将数据与需要它的测试配对。 我在jscglib库中使用了这种方法。 该库提供了流利的API以创建Java源代码。 测试包含一些Java构建器模式导演代码,然后将生成的源代码保存到文件中或与已存储的结果进行比较。

要保存文件,使用了aux方法getTargetFileName

private String getTargetFileName() {String testName = name.getMethodName();String fileName = "target/resources/" + testName + ".java";return fileName;}

要获取资源名称,使用了getResourceName方法:

private String getResourceName() {String testName = name.getMethodName();return testName + ".java";}

之后,加载和保存生成的Java代码变得轻而易举:

private void saveGeneratedProgram(String actual) throws IOException {File file = new File(getTargetFileName());file.getParentFile().mkdirs();FileOutputStream fos = new FileOutputStream(file);byte[] buf = actual.getBytes("utf-8");fos.write(buf, 0, buf.length);fos.close();}private String loadJavaSource() {try {String fileName = getResourceName();InputStream is = this.getClass().getResourceAsStream(fileName);byte[] buf = new byte[3000];int len = is.read(buf);is.close();return new String(buf, 0, len, "utf-8");} catch (Exception ie) {return null;}}

通常,这是我知道的唯一示例,您可以将测试方法的名称用于除文档之外的其他名称。

您不应该使用的名称

用我的语言说:“每个人都擅长某事。 至少表明失败。” 下面的示例演示了这种失败。

我已经看到了将测试数据编码为测试方法名称的代码。 访问测试方法名称的方式也很奇怪。 程序员可能不知道有一种支持方法的名称的方法。 缺乏知识可能阻止了他或她行恶,但这个人是个天才。 测试的测试方法是调用帮助程序类的静态方法。 该静态方法引发异常,它也捕获了该异常,并查看了堆栈跟踪以识别调用方方法的名称。

在访问了该名称之后,该代码应用了正则表达式以从方法名称中提取值。

摘要

我不知道Junit开发人员打算给我们类TestName 。 可能有一些用例需要该功能。 我确信他们没有提供功能,因为有可能这样做。 如果您不知道所提供的API有什么用处,则可能不应该仅仅因为可以就提供它。 新手程序员会错误地使用它而不是好的。

另一方面,如果您在API中看到可以使用的内容,则并不意味着您应该使用该功能。 您应该更好地了解该功能的目的,并相应地使用它。

编写单元测试比命名它们更重要。 只要没有单元测试,关于单元测试的命名的辩论就没有用。

根据需要编写单元测试,但不能更多。

翻译自: https://www.javacodegeeks.com/2015/05/using-junit-test-name.html

junit测试类叫什么名字

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

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

相关文章

c语言中realloc函数是什么

点击上方蓝字关注我,了解更多咨询1、判断当前指针是否有足够的连续空间。如果足够,扩大ptr指向的地址并返回。如果不够,如何根据size指定的大小分配空间,将原始数据复制到新分配的内存中,然后释放原始ptr指向的区域。2…

java 暂停循环_java小白关于while死循环时处理办法的一发求助帖

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼package greedsnake;import java.awt.Color;import java.awt.Font;import java.awt.Frame;import java.awt.Graphics;import java.awt.Image;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.awt.ev…

java jsp学习指南_JSP教程–最终指南

java jsp学习指南编者注: JavaServer Pages(JSP)技术使您可以轻松创建同时包含静态和动态组件的Web内容。 JSP技术提供了Java Servlet技术的所有动态功能,但提供了一种更自然的方法来创建静态内容。 JSP技术的主要功能包括用于开…

c语言中main函数是什么

点击上方蓝字关注我,了解更多咨询1、main函数是C程序的入口函数,即程序的执行从main函数开始,其他函数的调动也直接或间接地在main函数中调用。2、main函数的返回值用于解释程序的退出状态。若返回0,则表示程序正常退出。返回其他…

什么是通用字符名称?_通用名称

什么是通用字符名称&#xff1f;泛型类型参数名称通常包含一个大写字母字符。 如果您开始阅读有关泛型的官方ORACLE文档&#xff0c;则第一个示例是 /*** Generic version of the Box class.* param <T> the type of the value being boxed*/ public class Box<T>…

c语言中__cplusplus是什么

点击上方蓝字关注我&#xff0c;了解更多咨询1、__cplusplus和extern“C”一般都是配对使用&#xff0c;如果定义了__cplusplus(cpp文件默认定义了该宏)&#xff0c;则采用C语言方式进行编译。2、是在C中特有的&#xff0c;__cplusplus 其实就是C。实例#ifndef __CODERSRC_H__ …

git rollback代码都没了_git回滚线上代码

由于之前自己推代码的时候操作失误&#xff0c;才push代码的时候没有push到dev分支&#xff0c;而是push到了本地master同名分支的线上master分支&#xff0c;覆盖掉了线上在用的代码。在搜索解决办法的时候&#xff0c;发现网上给的信息大多不够全&#xff0c;且很多无用。所以…

c语言中fwirte函数的使用方法示例

点击上方蓝字关注我&#xff0c;了解更多咨询1、fwrite函数用于将缓冲区数据写入文件&#xff0c;并返回成功写入文件的元素数。如果出现错误或到达文件末尾&#xff0c;可能小于nmemb。2、fwrite函数不区分文件的尾部和错误&#xff0c;因此调用者必须使用feof和ferror来判断发…

联通光纤限制连接数_从数百万个光纤(而不是数千个线程)中查询数据库

联通光纤限制连接数jOOQ是在Java中执行SQL的好方法&#xff0c;而Quasar光纤带来了大大提高的并发性 我们很高兴在平行世界的 Fabio Tudone的jOOQ博客上宣布另一个非常有趣的来宾帖子。 Parallel Universe开发了一个开放源代码堆栈&#xff0c;使开发人员可以轻松地在JVM上对…

java 工程新建ivy文件_Hadoop学习之路(八)在eclispe上搭建Hadoop开发环境

一、添加插件将hadoop-eclipse-plugin-2.7.5.jar放入eclipse的plugins文件夹中二、在Windows上安装Hadoop2.7.5版本最好与Linux集群中的hadoop版本保持一致1、将hadoop-2.7.5-centos-6.7.tar.gz解压到Windows上的C盘software目录中2、配置hadoop的环境变量HADOOP_HOMEC:\softwa…

c语言中fclose函数的使用你会吗

点击上方蓝字关注我&#xff0c;了解更多咨询1、C语言fclose函数用于关闭使用fopen成功打开的文件。2、fopen函数和fclose函数总是成对出现。如果文件成功打开fopen函数&#xff0c;请使用fclose函数关闭文件。实例#include <stdio.h> #include <stdlib.h>int main…

悲观锁 引起死锁_悲观锁定时如何避免可怕的死锁-以及Java 8的一些用法!

悲观锁 引起死锁有时您根本无法避免&#xff1a;通过SQL进行悲观锁定。 实际上&#xff0c;当您要在共享的全局锁上同步多个应用程序时&#xff0c;它是一个很棒的工具。 有人可能认为这是在滥用数据库。 如果可以解决您遇到的问题&#xff0c;我们认为可以使用您拥有的工具。…

Java反序列化json内存溢出_fastJson与一起堆内存溢出'血案'

现象QA同学反映登录不上服务器排查问题1–日志级别查看log,发现玩家登录的时候抛出了一个java.lang.OutOfMemoryError大概代码是向Redis序列化一个PlayerMirror镜像数据,但是在JSON.toJSONString的时候出现了错误.比较清晰&#xff0c;即序列化的时候expandCapacity,内存不足。…

c语言中预处理器是什么

点击上方蓝字关注我&#xff0c;了解更多咨询1、C语言有预处理器&#xff0c;Java中没有这个概念&#xff0c;其实只是文本替换工具。2、C的预处理器&#xff0c;即CPP&#xff0c;将在实际编译器中完成处理&#xff0c;所有预处理命令将从#开始。实例#include <stdio.h>…

愚弄dnn_不要被泛型和向后兼容性所愚弄。 使用泛型类型

愚弄dnn最近&#xff0c;我与jOOQ的早期客户Ergon的 Sebastian Gruber进行了非常有趣的讨论&#xff0c;我们与之保持了密切联系。 与Sebastian交谈使我们的工程团队得出了一个结论&#xff0c;即我们应该完全重写jOOQ API。 现在&#xff0c;我们已经有很多用于各种用途的泛型…

php asp.net 代码量少,.NET_asp.net 反射减少代码书写量, 复制代码 代码如下:public b - phpStudy...

asp.net 反射减少代码书写量public bool Add(Liuyan refmodel){string sql "insert into liuyan(name,phone,zhiwei,gongsi,addr,country,dianyou,content,adddate)values(name,phone,zhiwei,gongsi,addr,country,dianyou,content,adddate)";OleDbParameter[] param…

c语言strcat_s函数如何使用

点击上方蓝字关注我&#xff0c;了解更多咨询1、strcat_s函数将strSource指向的字符串添加到其它字符串结尾。因此需要确保strDestination有足够的内存空间来容纳strSource和strDestination两个字符串&#xff0c;否则会导致溢出错误。2、strDestination末端的\0将被覆盖。strS…

502无法解析服务器标头_编写下载服务器。 第二部分:标头:Last-Modified,ETag和If-None-Match...

502无法解析服务器标头客户端缓存是万维网的基础之一。 服务器应通知客户端资源的有效性&#xff0c;客户端应尽可能快地对其进行缓存。 如我们所见&#xff0c;如果不缓存Web&#xff0c;它将非常缓慢。 只需在任何网站上Ctrl F5并将其与普通F5进行比较-后者就会更快&#xf…

c语言strcat_s函数的原理

点击上方蓝字关注我&#xff0c;了解更多咨询1、dst 内存空间大小目标字符串长度原始字符串场地‘\0’。2、使用sizeof函数获取内存空间大小&#xff0c;strlen函数获取字符串长度。即获取内存空间大小和查字符串长度。实例#include "stdafx.h" #include<stdlib.h…

java开发用怎么软件开发_Java 9中的5个功能将改变您开发软件的方式(还有2个不会)...

java开发用怎么软件开发有望在Java 9中发布的最令人兴奋的功能是什么&#xff1f; 近期不要对Java 9相对沉默而分心。JDK提交者正在努力准备下一个版本&#xff0c;预计在2015年12月才完成功能的下一个版本。此后&#xff0c;它将通过严格的测试和错误修复了将其准备于一般可用…