From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!feeder.eternal-september.org!feed.usenet.farm!feeder3.feed.usenet.farm!ecngs!feeder.ecngs.de!81.171.118.62.MISMATCH!peer02.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!fx29.am4.POSTED!not-for-mail From: Felix Krause Newsgroups: comp.lang.ada Message-ID: <2018042711034634047-contact@flyx.org> References: <7bc351f9-3373-4d48-95c3-c081cb5506f3@googlegroups.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1; format=flowed Content-Transfer-Encoding: 8bit Subject: Re: Ada aunit examples User-Agent: Unison/2.2 X-Complaints-To: abuse@eweka.nl NNTP-Posting-Date: Fri, 27 Apr 2018 09:03:46 UTC Organization: Eweka Internet Services Date: Fri, 27 Apr 2018 11:03:46 +0200 X-Received-Bytes: 3084 X-Received-Body-CRC: 2606777779 Xref: reader02.eternal-september.org comp.lang.ada:51746 Date: 2018-04-27T11:03:46+02:00 List-Id: 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