comp.lang.ada
 help / color / mirror / Atom feed
From: Felix Krause <contact@flyx.org>
Subject: Re: Ada aunit examples
Date: Fri, 27 Apr 2018 11:03:46 +0200
Date: 2018-04-27T11:03:46+02:00	[thread overview]
Message-ID: <2018042711034634047-contact@flyx.org> (raw)
In-Reply-To: 7bc351f9-3373-4d48-95c3-c081cb5506f3@googlegroups.com

AdaYaml [1] uses AUnit.

On 2018-04-27 04:57:56 +0000, Michael Hardeman said:
> 
> I want to see an example of a good test structure.
> What is a harness, and how is it used?

It's your main executable that you call to run the tests. It 
instantiates the test runner with the suite you want to run and 
optionally sets up reporting. In AdaYaml, I have one harness per suite, 
and each enables colors for the reporting output (green / red for 
passed / failed tests). You could also do things like having one single 
harness for all suites, and then selecting the suite with a command 
line parameter.

> What is a test suite, and how is it used?

It groups a set of test cases. Since each test case can actually 
consist of multiple tests, suites are a bit superfluous for small 
projects since they introduce a hierarchy level in your test structure 
that you might not actually need.

How you use suites depends on your project. In AdaYaml, I have two 
suites: On including all test cases concerned with loading YAML data, 
and one including all test cases concerned with dumping YAML data. This 
makes sense for me since the code used for loading and dumping is 
fairly disjoint and when I change anything on the loading side, it 
suffices to run the loading test suite to check whether I broke 
anything.

Initially, I had one test suite for each component (Lexer, Parser, 
DOM-Composer), but that basically meant that each suite contained a 
single test case. This was arguably better for running only a specific 
test case, but in the end, I decided that since all tests run in under 
one second, I can simply merge them.

> How do I integrate it properly into my gpr project files?

You create a new project file that compiles your tests, for example 
project-tests.gpr (AdaYaml has yaml-tests.gpr). That makes the test 
project a child of the main project. It typically makes sense to use 
the same compiler options for the tests as you use for the main 
project, like so:

    package Compiler renames Yaml.Compiler;

If you have scenario variables in your main project that alter 
compilation behavior (e.g. for debug/release builds), this will then 
also affect the test builds. In more complex scenarios, you may need to 
access the main project's scenario variables and include different 
tests based on what optional features are enabled in your main project.


 [1]: https://github.com/yaml/AdaYaml

-- 
Regards,
Felix Krause


  reply	other threads:[~2018-04-27  9:03 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-27  4:57 Ada aunit examples Michael Hardeman
2018-04-27  9:03 ` Felix Krause [this message]
2018-04-27 16:28   ` Michael Hardeman
2018-05-08 17:09   ` Michael Hardeman
2018-05-12 16:36     ` Felix Krause
2018-07-05 19:03       ` Michael Hardeman
2018-05-10 20:39 ` Stephen Leake
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox