当前位置: 首页 > news >正文

邯郸建设局网站汉邦未来网站开发有限公司

邯郸建设局网站,汉邦未来网站开发有限公司,三网合一网站,域名购买推荐编写junit 测试最近#xff0c;我为一个小型个人项目编写了很多Jasmine测试。 我花了一些时间才终于感到正确地完成了测试。 在此之后#xff0c;当切换回JUnit测试时#xff0c;我总是很难过。 由于某种原因#xff0c;JUnit测试不再那么好#xff0c;我想知道是否有可能… 编写junit 测试 最近我为一个小型个人项目编写了很多Jasmine测试。 我花了一些时间才终于感到正确地完成了测试。 在此之后当切换回JUnit测试时我总是很难过。 由于某种原因JUnit测试不再那么好我想知道是否有可能以类似于Jasmine的方式编写JUnit测试。 Jasmine是一个受RSpec Ruby BDD测试框架启发的流行JavaScript行为驱动开发测试框架。 一个简单的茉莉花测试如下所示 describe(AudioPlayer tests, function() {var player;beforeEach(function() {player  new AudioPlayer();});it(should not play any track after initialization, function() {expect(player.isPlaying()).toBeFalsy();});... }); 第一行中的describe函数调用使用AudioPlayer tests描述创建了一个新的测试套件。 在测试套件中我们可以使用it创建测试在Jasmine中称为specs。 在这里我们检查创建新的AudioPlayer的isPlaying方法是否返回false。 AudioPlayer实例。 用JUnit编写的相同测试如下所示 public class AudioPlayerTest {private AudioPlayer audioPlayer;Before public void before() {audioPlayer  new AudioPlayer();}Testvoid notPlayingAfterInitialization() {assertFalse(audioPlayer.isPlaying());}... } 我个人认为Jasmine测试与JUnit版本相比更具可读性。 在Jasmine中对测试没有任何影响的唯一噪音是花括号和function关键字。 其他所有内容都包含一些有用的信息。 在阅读JUnit测试时我们可以忽略诸如void访问修饰符私有公共..注释和不相关的方法名称如以Before注释的方法名称之类的关键字。 除此之外以驼峰案例方法名称编码的测试描述不太好读。 除了提高可读性外我真的很喜欢Jasmine嵌套测试套件的功能。 让我们来看一个更长的示例 describe(AudioPlayers tests, function() {var player;beforeEach(function() {player  new AudioPlayer();});describe(when a track is played, function() {var track;beforeEach(function() {track  new Track(foo/bar.mp3)player.play(track);});it(is playing a track, function() {expect(player.isPlaying()).toBeTruthy();});it(returns the track that is currently played, function() {expect(player.getCurrentTrack()).toEqual(track);});});... }); 在这里我们创建了一个子测试套件负责测试AudioPlayer播放曲目时的行为。 内部的beforeEach调用用于为子测试套件内的所有测试设置通用的前提条件。 相反在JUnit中为多个但不是全部测试共享通用的前提条件有时会变得很麻烦。 当然在测试中复制设置代码是不好的因此我们为此创建了额外的方法。 为了在设置和测试方法之间共享数据例如上面示例中的track变量我们必须使用成员变量范围更大。 另外我们应确保将具有类似前提条件的测试分组在一起以避免需要阅读整个测试类来查找特定情况下的所有相关测试。 或者我们可以将事情分成多个较小的类。 但是然后我们可能必须在这些类之间共享设置代码…… 如果我们查看Jasmine测试就会发现该结构是通过调用全局函数例如describeit…并传递描述性字符串和匿名函数来定义的。 有了Java 8我们有了Lambdas所以我们可以做同样的事情吗 是的我们可以在Java 8中编写如下代码 public class AudioPlayerTest {private AudioPlayer player;public AudioPlayerTest() {describe(AudioPlayer tests, () - {beforeEach(() - {player  new AudioPlayer();});it(should not play any track after initialization, () - {expect(player.isPlaying()).toBeFalsy();});});} } 如果我们暂时假设describebeforeEachit和Expect是采用适当参数的静态导入方法则至少可以编译。 但是我们应该如何进行这种测试 出于兴趣我尝试将其与JUnit集成在一起结果发现这实际上非常简单我将在以后进行介绍。 到目前为止结果是一个名为Oleaster的小型图书馆。 用Oleaster编写的测试如下所示 import static com.mscharhag.oleaster.runner.StaticRunnerSupport.*; ...RunWith(OleasterRunner.class) public class AudioPlayerTest {private AudioPlayer player;{describe(AudioPlayer tests, () - {beforeEach(() - {player  new AudioPlayer();});it(should not play any track after initialization, () - {assertFalse(player.isPlaying());});});} } 与前面的示例相比只有几处发生了变化。 在这里测试类使用JUnit RunWith注释进行注释。 这告诉JUnit在运行此测试类时使用Oleaster。 通过静态导入StaticRunnerSupport。*可以直接访问静态Oleaster方法例如describe或it。 还要注意构造函数已由实例初始化程序替换而Jasmine like matcher被标准JUnit断言替换。 与原始的Jasmine测试相比实际上有一件事情并不那么出色。 事实是在Java中变量需要有效地最终确定才能在lambda表达式中使用。 这意味着以下代码段不会编译 describe(AudioPlayer tests, () - {AudioPlayer player;beforeEach(() - {player  new AudioPlayer();});... }); 在beforeEachlambda表达式内对玩家的赋值将不会编译因为玩家实际上不是最终的。 在Java中我们必须在这种情况下使用实例字段如上例所示。 万一您担心要报告Oleaster仅负责收集和运行测试用例。 整个报告仍由JUnit完成。 因此Oleaster应该不会对使用JUnit报告的工具和库造成任何问题。 例如以下屏幕截图显示了IntelliJ IDEA中Oleaster测试失败的结果 如果您想知道Oleaster测试在实践中的外观您可以看看Oleaster的测试用Oleaster本身编写。 您可以在此处找到GitHub测试目录。 通过评论此帖子或创建GitHub问题随时添加任何类型的反馈。 翻译自: https://www.javacodegeeks.com/2014/07/an-alternative-approach-of-writing-junit-tests-the-jasmine-way.html编写junit 测试
http://www.huolong8.cn/news/155358/

相关文章:

  • 注册一个做网站的公司好网站建设 鄂icp备
  • 2017淘宝客网站怎么做服装厂家
  • 网站建设信息发布平台谷歌做英文网站
  • 温州网站优化定制小红书seo是什么意思
  • 1688黄页网用广州seo推广获精准访问量
  • 兰州市网站建设公司网站建设公司优惠大酬宾活动
  • 网站空间哪里便宜开发直播平台
  • 张家口企业网站建设站长平台工具
  • 阿里云个人网站建设方案书建设派网站
  • 网站排版南京h5 网站建设
  • 学做网站论坛视频下载手机网络
  • 网站备案登录中英网站的设计
  • 做分销商城网站的升级不了wordpress
  • 个人博客网站制作搭建网站建设小公司生存
  • 湘潭做网站 都来磐石网络仿站定制模板建站
  • 免费建站推广网站建设维护多少钱
  • 北海网站建设网微博营销的特点有哪些
  • 网站创建服务公司洛阳哪里做网站
  • 网站建设绿茶科技网站解析一般什么时候
  • 鹰潭网站建设网站建设 合优企业
  • 鄂尔多斯做网站建设智能网站
  • 金融网站建设方案免费高清视频下载
  • 中国建设招聘信息网站上海焱灿网络
  • 高端网站建设个人做北京电梯招标的网站
  • 唐山市城乡建设局网站wordpress zsqx
  • 绿叶网站怎么做百度人工服务24小时
  • 微信公众号微网站 建设报价表如何仿网站模板
  • 如何制作营销网站模板下载网站建设公司找哪家
  • 做ui的网站有哪些山东建设兵团网站
  • 国投集团网站开发如何在电脑上重新装wordpress