协和 – 第一个应用程序

协和 – 第一个应用程序


让我们开始使用 Concordion 进行编程。在开始使用 Concordion 编写第一个示例之前,您必须确保已按照Concordion – 环境设置教程中的说明正确设置了 Concordion 环境我们还假设您对 Eclipse IDE 有一定的了解。

因此,让我们继续编写一个简单的 Concordion 应用程序,它将打印以下验收测试 –

Example
When Robert logs in the system, a greeting "Hello Robert!" is displayed.

步骤 1 – 创建 Java 项目

第一步是使用 Eclipse IDE 创建一个简单的 Java 项目。按照选项文件 → 新建 → 项目,最后从向导列表中选择Java 项目向导。现在使用向导窗口将您的项目命名为Concordion,如下所示 –

协和向导

成功创建项目后,您的项目资源管理器中将包含以下内容

协和目录

第 2 步 – 添加所需的库

让我们在我们的项目中添加 concordion 及其依赖项。为此,右键单击您的项目名称concordion,然后按照上下文菜单中可用的选项进行操作:构建路径 → 配置构建路径以显示 Java 构建路径窗口,如下所示 –

Java 构建路径

现在使用选项卡下可用的添加外部 JAR按钮从 Concordion 文件夹添加以下核心 JAR。

  • concordion-1.5.1
  • hamcrest-core-1.3
  • junit-4.12
  • ognl-2.6.9
  • xom-1.2.5

第 3 步 – 创建源文件

现在让我们在concordion项目下创建实际的源文件首先,我们需要创建一个名为com.tutorialspoint的包为此,请右键单击包浏览器部分中的src并遵循选项:新建 → 包

接下来,我们将在 com.tutorialspoint 包下创建 System .java文件。

协和源文件

这是System.java文件的内容

package com.tutorialspoint;

public class System {
   public String getGreeting(String userName){
      return "Hello " + userName + "!";
   }
}

第 4 步 – 创建规范文件

现在让我们在concordion项目下创建实际的规范文件首先,我们需要创建一个名为specs的新源文件夹该文件夹将包含规范文件,如 JUnitFixture 或测试运行程序和规范的 html 文件。现在我们需要创建一个名为specs.tutorialspoint的包为此,请右键单击包浏览器部分中的规范,然后选择以下选项:新建 → 包

接下来,我们将创建System.htmlSystemFixture.java的specs.tutorialspoint包下的文件。此后,我们将在 specs 源文件夹下添加concordion.css

concordion 规格文件

这是System.html文件的内容

<html xmlns:concordion = "http://www.concordion.org/2007/concordion">
   <head>
      <link href = "../concordion.css" rel = "stylesheet" type="text/css" />
   </head>

   <body>
      <h1>System Specifications</h1>
      <p>We are building specifications for our online order tracking application.</p>
      <p>Following is the requirement to show greeting to logged in user:</p>
      <div class = "example">      
         <h3>Example</h3>
         <p>When <span concordion:set = "#userName">Robert</span> 
            logs in the system, a greeting "<span concordion:assertEquals = "getGreeting(#userName)">
            Hello Robert!</span>" is displayed.</p>
      </div>
   </body>

</html>

这是SystemFixture.java文件的内容

package specs.tutorialspoint;

import com.tutorialspoint.System;
import org.concordion.integration.junit4.ConcordionRunner;
import org.junit.runner.RunWith;

@RunWith(ConcordionRunner.class)

public class SystemFixture {

   System system = new System();
	
   public String getGreeting(String userName){
      return system.getGreeting(userName);
   }
}

这是concordion.css文件的内容

* {
   font-family: Arial;
}

body {
   padding: 32px;  
}

pre {
   padding: 6px 28px 6px 28px;
   background-color: #E8EEF7;
}

pre, pre *, code, code *, kbd {
   font-family: Courier New, Courier;
   font-size: 10pt;
}

h1, h1 * {
   font-size: 24pt;	
}

p, td, th, li, .breadcrumbs {
   font-size: 10pt;
}

p, li {
   line-height: 140%;
}

table {
   border-collapse: collapse;
   empty-cells: show;
   margin: 8px 0px 8px 0px;
}

th, td {
   border: 1px solid black;
   padding: 3px;
}

td {
   background-color: white;
   vertical-align: top;
}

th {
   background-color: #C3D9FF;
}

li {
   margin-top: 6px;
   margin-bottom: 6px; 
}

.example {
   padding: 6px 16px 6px 16px;
   border: 1px solid #D7D7D7;
   margin: 6px 0px 28px 0px;
   background-color: #F7F7F7;
}

.example h3 {
   margin-top: 8px;
   margin-bottom: 8px;
   font-size: 12pt;
}

.special {
  font-style: italic;
}

.idea {
  font-size: 9pt;
  color: #888;
  font-style: italic;	
}

.tight li {
  margin-top: 1px;
  margin-bottom: 1px; 
}

.commentary {
  float: right;
  width: 200px;
  background-color: #ffffd0;
  padding:8px;
  border: 3px solid #eeeeb0;	 
  margin: 10px 0px 10px 10px;	 
}

.commentary, .commentary * {
  font-size: 8pt;
}

关于规范 html 文件和测试夹具有两个要点需要注意 –

  • System.html 是使用 concordion 命名空间的规范 html 文件。

<html xmlns:concordion="http://www.concordion.org/2007/concordion">
  • System.html 使用 concordion:set 命令将临时变量 userName 的值设置为 Robert。这里,userName 是要传递给 System fixture 的 getGreeting 方法的参数。

When <span concordion:set="#userName">Robert</span> logs in the system
  • System.html 使用 concordion:assertEquals 命令检查 getGreeting(userName) 函数的输出是否为 Hello Robert!。

a greeting "<span concordion:assertEquals="getGreeting(#userName)">
Hello Robert!</span>" is displayed.
  • SystemFixture 是一个用 ConcordionRunner.class 注释的 JUnit 测试装置。

@RunWith(ConcordionRunner.class)
public class SystemFixture {}
  • SystemFixture 有一个 getGreeting 方法,可以向用户返回问候语。

public String getGreeting(String userName){
   return system.getGreeting(userName);
}

第 5 步 – 运行程序

右键单击 SystemFixture 的内容区域并选择Run as > JUnit Test Case您将看到以下输出,junit 成功。

C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\concordion\specs\tutorialspoint\System.html
Successes: 1, Failures: 0

System.html 是 Concordion 测试运行的输出。

协和输出

恭喜,您已成功创建第一个 Concordion 验收测试。此外,让我们在接下来的几章中开始做一些更有趣的事情。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁