All Projects → Adven27 → Exam

Adven27 / Exam

Licence: MIT License
Extension for Concordion BDD Framework

Programming Languages

javascript
184084 projects - #8 most used programming language
kotlin
9241 projects
HTML
75241 projects
java
68154 projects - #9 most used programming language
CSS
56736 projects
shell
77523 projects

Projects that are alternatives of or similar to Exam

kheera-testrunner-android
BDD Framework for Android
Stars: ✭ 18 (+20%)
Mutual labels:  testing-framework
page-content-tester
Paco is a Java based framework for non-blocking and highly parallelized Dom testing.
Stars: ✭ 13 (-13.33%)
Mutual labels:  testing-framework
cucumber
Cucumber testing framework for Rust. Fully native, no external test runners or dependencies.
Stars: ✭ 322 (+2046.67%)
Mutual labels:  atdd
Wasmite
Now WebAssembly has proper testing, unit-testing and debugging 🤗
Stars: ✭ 20 (+33.33%)
Mutual labels:  testing-framework
polish
Testing Framework for Rust
Stars: ✭ 44 (+193.33%)
Mutual labels:  testing-framework
iutest
c++ testing framework
Stars: ✭ 58 (+286.67%)
Mutual labels:  testing-framework
rtf
Regression testing framework
Stars: ✭ 35 (+133.33%)
Mutual labels:  testing-framework
Compose
Nice and simple DSL for Espresso Compose UI testing in Kotlin
Stars: ✭ 56 (+273.33%)
Mutual labels:  testing-framework
AnotherFasterRunner
基于HttpRunner+Python+DRF+Vue的接口自动化测试平台
Stars: ✭ 216 (+1340%)
Mutual labels:  testing-framework
oatts
DEPRECATED in favor of https://github.com/google/oatts
Stars: ✭ 26 (+73.33%)
Mutual labels:  testing-framework
deckard
DNS test harness
Stars: ✭ 28 (+86.67%)
Mutual labels:  testing-framework
RestSharpFramework
Framework for testing RESTful Services with RestSharp and C# HTTP Client
Stars: ✭ 18 (+20%)
Mutual labels:  testing-framework
op-test
Testing Firmware for OpenPOWER systems
Stars: ✭ 30 (+100%)
Mutual labels:  testing-framework
karate-runner
VSCode Extension for Karate
Stars: ✭ 23 (+53.33%)
Mutual labels:  testing-framework
cpptest
🛠️ Powerful, yet simple, C++ unit testing framework; new home after https://sourceforge.net/projects/cpptest/
Stars: ✭ 51 (+240%)
Mutual labels:  testing-framework
CloudRaider
A resiliency tool that automates Failure mode effect analysis tests, simplifying complex testing with a behavior-driven development and testing approach. Provides a programmatic way to execute controlled failures in AWS and a BDD way to write test cases, allowing test plans themselves to become test cases that can be executed as is.
Stars: ✭ 26 (+73.33%)
Mutual labels:  testing-framework
crotest
A tiny and simple test framework for crystal
Stars: ✭ 24 (+60%)
Mutual labels:  testing-framework
sbml-test-suite
The SBML Test Suite is a conformance testing system. It allows developers and users to test the degree and correctness of the SBML support provided in a software package.
Stars: ✭ 21 (+40%)
Mutual labels:  testing-framework
SpecTools
Write less test code with this set of spec tools. Swift, iOS, testing framework independent (but works well with Quick/Nimble or directly).
Stars: ✭ 38 (+153.33%)
Mutual labels:  testing-framework
testkube
☸️ Kubernetes-native framework for test definition and execution
Stars: ✭ 172 (+1046.67%)
Mutual labels:  testing-framework

Exam: Acceptance Test–Driven Development based on Concordion

Illustration from "Growing Object-Oriented Software, Guided by Tests" Exam

Stability: Active CI

Exam is oriented on declarative end-to-end black\graybox application testing in a way a manual tester would do it: send request, verify response\database\message queue etc.

Features

  • Declarative glue-code free approach
  • Attractive, flexible documentation thanks to Concordion
  • Widly used set of testing tools under the hood: dbunit, rest-assured, xml-unit, json-unit

Getting started

1) Install

// Typical microservices setup (Web API + DB + MQ) testing:
testImplementation "io.github.adven27:exam-ms:6.0.0-alpha-1"

//same as:
//testImplementation "io.github.adven27:exam-ws:6.0.0-alpha-1"
//testImplementation "io.github.adven27:exam-db:6.0.0-alpha-1"
//testImplementation "io.github.adven27:exam-mq:6.0.0-alpha-1"

// UI testing
testImplementation "io.github.adven27:exam-ui:6.0.0-alpha-1"

2) Use

For detailed info, see original tutorial

specs.Specs.java

public class Specs extends AbstractSpecs {
    private static ConfigurableApplicationContext SUT;

    @Override
    protected ExamExtension init() {
        return new ExamExtension(
            new WsPlugin(8080),
            new DbPlugin("org.postgresql.Driver", "jdbc:postgresql://localhost:5432/postgres", "postgres", "postgres"),
            new MqPlugin(Map.of("kafka", new KafkaTester("PLAINTEXT://localhost:9092", "topic")))
        );
    }

    @Override
    protected void startSut() {
        SpringApplication app = new SpringApplication(Main.class);
        app.setAdditionalProfiles("qa");
        SUT = app.run();
    }

    @Override
    protected void stopSut() {
        SUT.stop();
    }
}

specs\Specs.md

# API

- [User creation]( usercreation/UserCreation.html "c:run")

specs.usercreation.UserCreation.java

public class UserCreation extends Specs {
}

specs\usercreation\UserCreation.html

<html xmlns:e="http://exam.extension.io" xmlns:cc="http://www.concordion.org/2007/concordion">
<body>
    <h1>User creation</h1>
    <e:summary/>
    <e:example name="My dummy user creation example">
        <e:given>
          Given users:
          <e:db-set table="user" cols="name, age, id=1..10">
              <e:row>Andrew, 20</e:row>
              <e:row>Bob   , 30</e:row>
          </e:db-set>
        </e:given>
        <e:post url="users">
          <e:case desc="When name and age was posted user should be created and id should be returned">        
            <e:body> {"name": "Carl", "age": 40} </e:body>
            <e:expected> {"id": "{{number}}"} </e:expected>
            <e:check>
                <e:db-check table="person" cols="name, age">
                  <e:row>Andrew, 20</e:row>
                  <e:row>Bob   , 30</e:row>
                  <e:row>Carl  , 40</e:row>
                </e:db-check>
            </e:check>
          </e:case>      
          <e:case desc="Age is optional">
            <e:body> {"name": "Don"} </e:body>
            <e:expected> {"id": "{{number}}"} </e:expected>
            <e:check>
                <e:db-check table="person" cols="name, age" where="name='Don'">
                  <e:row>Don, {{NULL}}</e:row>
                </e:db-check>
            </e:check>
          </e:case>
        </e:post>
    </e:example>
</body>
</html>

Examples

For more info, see live spec and demo project

Help

Telegram https://t.me/joinchat/DClprRZ1xDCBtjGexhZOGw

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].