文档章节

【JBehave】集成spring测试

一路向北的兔斯基
 一路向北的兔斯基
发布于 2016/04/20 18:49
字数 588
阅读 88
收藏 0

  通过研究网上的教程(这儿说一句,网上关于jbehave的教程确实有点少)和官网的文档,完成了基于jbehave和spring的整合测试案例,现将相关的代码发出来,供大家。

  博主后期应该会大量使用jbehave,大家有什么问题可以一起交流。


1、根据测试场景,编写相应的story。

Meta:

Narrative:
As a user
I want to login into system and i will own my right

Scenario: system admin login
Given uid is v3admin@v3 and password is 123456
When i login
Then i have role manager


Scenario: company admin login
Given uid is chenshengli@zyqckjcd and password is 123456
When i login
Then i have role company_manager

在这个story中,包含两个场景的测试,其一是系统管理员登陆,其二是公司管理员登陆


2、编写对应的step java

@Component
public class LoginSteps {

    private String uid;

    private String password;

    private User user;

    @Autowired
    private UserService userService;

    @Given("uid is $uid and password is $password")
    public void init(String uid, String password) {
        this.uid = uid;
        this.password = password;
    }


    @When("i login")
    public void login() throws V3Exception {
        System.out.println(uid + "," + password);
        this.user = userService.login(uid, password);
    }

    @Then("i have role $role")
    public void check(String role) {
        assertTrue(user.getRoles().contains(role));
    }

}

因为要集成spring,所以该类加了注解@Component,以便执行时能自动扫描到。

因为集成了spring,所以需要的userService可以通过注解@Autowired自动获取到。


3、测试主类

public class SpringTestRunner extends JUnitStories {

    private ApplicationContext context;

    public SpringTestRunner() {
    }

    @Override
    public Configuration configuration() {
        return new MostUsefulConfiguration()
                .useStoryParser(new RegexStoryParser(new ExamplesTableFactory(new LoadFromClasspath(this.getClass()))))
                .useStoryReporterBuilder(new StoryReporterBuilder().withRelativeDirectory("doc/jbehave")
                        .withCodeLocation(CodeLocations.codeLocationFromClass(getClass())).withDefaultFormats()
                        .withFormats(CONSOLE, TXT, HTML, XML));
    }

    @Override
    protected List<String> storyPaths() {
        List<String> result = new StoryFinder().findPaths(CodeLocations.codeLocationFromClass(this.getClass()), "**/*.story", "");
        System.out.println("storyPaths:" + result);
        return result;
    }


    public InjectableStepsFactory stepsFactory() {
        return new SpringStepsFactory(configuration(), context());
    }

    private ApplicationContext context() {
        if (context == null) {
            context = new SpringApplicationContextFactory("v3-market.xml").createApplicationContext();
        }
        return context;
    }
}

因为是要执行所有的story测试,所以该类扩展了JUnitStories,并重写了storyPaths 方法,根据自己的情况发现并加载相应的story文件。


4、执行

JUnitStories有一个注解为@Test的run(),所以SpringTestRunner是可以直接执行的junit类,通过执行该类,将会扫描所有的story并进行相应的测试,最后生成测试报告。


5、测试报告

生成报告文件列表如下,主要的测试通过view中的index.html查看。

详细的测试结果,因为没有将jbehave-site-resources和jbehave-core-resources.zip中的内容解压到view目录下,所有看到的测试报告页面有点丑。

© 著作权归作者所有

共有 人打赏支持
一路向北的兔斯基
粉丝 7
博文 59
码字总数 23505
作品 0
成都
高级程序员
关于TDD、BDD和DDD的一些看法

在实际的项目中,我们可能随时面对各种不同的需求,它的各个方面的要素决定了我们所采用的开发模式。 比如,它的复杂度如何?所有的需求是否足够清晰?开发人员对相关的业务是否足够了解?项...

Euray
2014/11/16
0
1
【JBehave】通过ant执行jbehave测试

前一篇文章将jbehave和spring进行了集成,并编写了能执行的junit测试类,本篇文章将通过ant执行jbehave测试。因为已经有了junit测试类,其它剩下要做的事情就是简单的通过ant的task将SpringT...

一路向北的兔斯基
2016/04/20
31
0
【JBehave】JBehave介绍

JBehave介绍 JBehave是一个用Java编写的BDD(Behavior-Driven-Design)框架, java界的Cucumber。(注: 1、BDD主要的目的是能够从业务领域专家的视角来编写测试用例,以解决技术人员和业务领域...

一路向北的兔斯基
2016/04/20
87
0
sping3+hibernate4框架模板

本框架以商品购物平台项目为例,用到spring3mvc和hibernate4,主要搭建步骤如下: 1、spring3MVC模板 2、集成hiebernate4模板 3、Spring集成测试模板 包含的技术: spring框架; springMVC技术...

java-苦苦甜甜
2012/10/19
0
0
mybatis入门教程(八)------mybatis与spring集成

Mybatis与Spring集成开发 前期准备 mybatis与Spring集成,那么就需要spring对应的jar包 <dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><vers......

残风vs逝梦
2014/06/10
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

arts-week5

Algorithm 824. Goat Latin - LeetCode 152. Maximum Product Subarray - LeetCode 110. Balanced Binary Tree - LeetCode 67. Two Sum II - Input array is sorted - LeetCode 665. Non-dec......

yysue
25分钟前
0
0
iOS开发之AddressBook框架详解

iOS开发之AddressBook框架详解 一、写在前面 首先,AddressBook框架是一个已经过时的框架,iOS9之后官方提供了Contacts框架来进行用户通讯录相关操作。尽管如此,AddressBook框架依然是一个非...

珲少
54分钟前
1
0
两年摸爬滚打 Spring Boot,总结了这 16 条最佳实践

Spring Boot是最流行的用于开发微服务的Java框架。在本文中,我将与你分享自2016年以来我在专业开发中使用Spring Boot所采用的最佳实践。这些内容是基于我的个人经验和一些熟知的Spring Boot...

Java填坑之路
今天
4
0
《Spring5学习》04 - 面向切面编程

一、Spring面向切面编程的基本概念 面向切面编程(即AOP):把项目中需要再多处使用的功能比如日志、安全和事务等集中到一个类中处理,而不用在每个需要用到该功能的地方显式调用。 横切关注...

老韭菜
今天
2
0
day61-20180819-流利阅读笔记

跑道没了,它们还在跑:澳门赛狗业的遗孤 Daniel 2018-08-19 1.今日导读 相信你早就知道香港有个赛马会,可是你听说过香港的邻居澳门原本有个赛狗会吗?其实,对于澳门人来说,赛狗这项活动历...

aibinxiao
今天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部