当前位置: 首页 > 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://wiki.neutronadmin.com/news/155358/

相关文章:

  • 迁安建设局官方网站北京保障性住房建设投资中心网站
  • 传统网站设计织梦网站首页是哪个文件
  • 青岛开发网站烟台市建设工程招标投标协会网站
  • 动态的网站怎么做水头做网站
  • 淄川网站建设中关村在线主页
  • 深圳建网站技术常用于做网站的软件
  • 合肥做网站的公有没有悬赏做ppt的网站
  • 电子商务网站开发主要实现功能对外贸营销型网站建设的几点建议
  • 建设企业网站下载外贸网站怎么换域名
  • 本地网站做通用会员卡设计网页通常使用什么语言
  • 丽水网站建设公司排名企业网站推广方案
  • 手机app开发软件有哪些三秦seo
  • 平台网站开发公司php网站开发实例教程的作者
  • 做阿里巴巴1688网站程序做网站税费
  • html购物网站代码vs2015做网站的后端
  • 阿里云服务器wordpress建站教程上海装修公司排名前十名
  • 自己做网站用花钱吗ui设计培训机构哪个比较好
  • 公司要做网站建设网站的成本有哪些
  • 图片网站虚拟主机免费下载网站模板
  • 手机移动端网站建设邯郸住宅与房地产信息网
  • 百度搜索风云排行榜优化法治化营商环境
  • 有口碑的武进网站建设丰城建设网站
  • 网站建设好后 如何验收七台河新闻综合频道节目表
  • 门户网站建设的书籍鞍山网站建设优化
  • 大型行业网站最便宜买机票网站建设
  • 做电影网站解决版权问题建设工程八大员考试网站
  • 公司网站如何上传图片wordpress 手机登录
  • 专业网站建设公司单位网站建设费用什么会计科目
  • 企业网站设计解决方案平面设计接单渠道有哪些
  • vue 做企业网站行不网站建设的教材