Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #35294

Re: C unit testing and regression testing

From Ian Collins <ian-news@hotmail.com>
Newsgroups comp.lang.c
Subject Re: C unit testing and regression testing
Date 2013-08-14 10:58 +1200
Message-ID <b6vrvqFlukaU4@mid.individual.net> (permalink)
References <ku0i0g$e0v$1@dont-email.me> <slrnl07qc3.2m9.grahn+nntp@frailea.sa.invalid> <ku23uj$p3t$1@dont-email.me> <slrnl09m2o.2m9.grahn+nntp@frailea.sa.invalid> <kud68v$20c$1@dont-email.me>

Show all headers | View raw


James Harris wrote:
> "Jorgen Grahn" <grahn+nntp@snipabacken.se> wrote in message
> news:slrnl09m2o.2m9.grahn+nntp@frailea.sa.invalid...
>
> ....
>
>>> ... I wonder if C's macros could be a boon here in that
>>> they could be supplied with any needed parameters to generate good
>>> testing
>>> code. Possibly something like the following
>>>
>>>    EXPECT(function(parms), return_type, expected_result, "text describing
>>> the
>>> test")
>>>    EXPECT(function(parms), return_type, expected_result, "text describing
>>> the
>>> test")
>>>
>>> Then a whole series of such EXPECT calls could carry out the simpler
>>> types
>>> of test. For any that fail the EXPECT call could state what was expected,
>>> what was received, and produce a relevant message identifying the test
>>> which
>>> failed such as
>>>
>>>    Expected 4, got 5: checking the number of zero elements in the array
>>>
>>> where the text at the end comes from the last macro argument.
>>
>> That would work. Although I'm personally not so fond of extra
>> descriptions: I want as little as possible to distract from writing
>> and reading the test cases.  Readable messages when a test fails is
>> less important to me.
>
> I find such things much easier to read if they can be expressed on one line.
> That's particularly true where there is a series of tests one after the
> other without any code in between. That helps to see differences between
> tests and to spot if any are missing.

Having multiple test cases in one test function is generally not a good 
idea.  It makes spotting the actual failure harder unless you are very 
careful with your failure reports.

> BTW, what I have tried so far is OK for testing scalars but sometimes we
> want to test composite objects. For example, if generating an array of
> values the test should be that the array (or part thereof) has the values we
> expect.
>
> Do you guys have any good way of testing such composites? Or do you just
> check each item individually? Say you had an array which, at some point in
> the tesing, should have two or three elements with specific values. Would
> you just write a check for each element or do you have a more clever way of
> testing such things?

With CppUnit (and I assume other test frameworks) you can define your 
own equivalence operator for a given type.

-- 
Ian Collins

Back to comp.lang.c | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

C unit testing and regression testing "James Harris" <james.harris.1@gmail.com> - 2013-08-08 17:46 +0100
  Re: C unit testing and regression testing James Kuyper <jameskuyper@verizon.net> - 2013-08-08 13:29 -0400
    Re: C unit testing and regression testing Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-08 11:49 -0700
      Re: C unit testing and regression testing James Kuyper <jameskuyper@verizon.net> - 2013-08-08 16:33 -0400
        Re: C unit testing and regression testing Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-08 14:55 -0700
          Re: C unit testing and regression testing James Kuyper <jameskuyper@verizon.net> - 2013-08-08 18:35 -0400
            Re: C unit testing and regression testing "James Harris" <james.harris.1@gmail.com> - 2013-08-09 07:34 +0100
          Re: C unit testing and regression testing Ian Collins <ian-news@hotmail.com> - 2013-08-09 18:08 +1200
            Re: C unit testing and regression testing Malcolm McLean <malcolm.mclean5@btinternet.com> - 2013-08-09 03:16 -0700
      Re: C unit testing and regression testing Ian Collins <ian-news@hotmail.com> - 2013-08-09 18:04 +1200
    Re: C unit testing and regression testing "James Harris" <james.harris.1@gmail.com> - 2013-08-09 07:30 +0100
  Re: C unit testing and regression testing Les Cargill <lcargill99@comcast.com> - 2013-08-08 12:54 -0500
    Re: C unit testing and regression testing "James Harris" <james.harris.1@gmail.com> - 2013-08-09 07:37 +0100
      Re: C unit testing and regression testing Les Cargill <lcargill99@comcast.com> - 2013-08-09 07:46 -0500
  Re: C unit testing and regression testing Jorgen Grahn <grahn+nntp@snipabacken.se> - 2013-08-08 18:55 +0000
    Re: C unit testing and regression testing "James Harris" <james.harris.1@gmail.com> - 2013-08-09 07:58 +0100
      Re: C unit testing and regression testing Ian Collins <ian-news@hotmail.com> - 2013-08-09 19:54 +1200
        Re: C unit testing and regression testing "James Harris" <james.harris.1@gmail.com> - 2013-08-13 12:35 +0100
          Expect (was Re: C unit testing and regression testing) Jorgen Grahn <grahn+nntp@snipabacken.se> - 2013-08-13 19:10 +0000
      Re: C unit testing and regression testing Jorgen Grahn <grahn+nntp@snipabacken.se> - 2013-08-09 11:54 +0000
        Re: C unit testing and regression testing "James Harris" <james.harris.1@gmail.com> - 2013-08-13 12:45 +0100
          Re: C unit testing and regression testing Jorgen Grahn <grahn+nntp@snipabacken.se> - 2013-08-13 19:50 +0000
            Re: C unit testing and regression testing "James Harris" <james.harris.1@gmail.com> - 2013-08-14 10:14 +0100
              Re: C unit testing and regression testing Jorgen Grahn <grahn+nntp@snipabacken.se> - 2013-08-14 19:44 +0000
                Re: C unit testing and regression testing "James Harris" <james.harris.1@gmail.com> - 2013-08-15 13:10 +0100
                Re: C unit testing and regression testing Jorgen Grahn <grahn+nntp@snipabacken.se> - 2013-08-17 07:32 +0000
          Re: C unit testing and regression testing Ian Collins <ian-news@hotmail.com> - 2013-08-14 10:58 +1200
            Re: C unit testing and regression testing "James Harris" <james.harris.1@gmail.com> - 2013-08-14 10:25 +0100
              Re: C unit testing and regression testing Ian Collins <ian-news@hotmail.com> - 2013-08-14 21:53 +1200
  Re: C unit testing and regression testing Ian Collins <ian-news@hotmail.com> - 2013-08-09 07:17 +1200
    Re: C unit testing and regression testing Bart van Ingen Schenau <bart@ingen.ddns.info.invalid> - 2013-08-09 10:30 +0000
      Re: C unit testing and regression testing Ian Collins <ian-news@hotmail.com> - 2013-08-10 08:21 +1200
  Re: C unit testing and regression testing <william@wilbur.25thandClement.com> - 2013-08-08 13:37 -0700
    Re: C unit testing and regression testing Jorgen Grahn <grahn+nntp@snipabacken.se> - 2013-08-08 22:52 +0000
      Re: C unit testing and regression testing "James Harris" <james.harris.1@gmail.com> - 2013-08-09 08:17 +0100
        Re: C unit testing and regression testing Jorgen Grahn <grahn+nntp@snipabacken.se> - 2013-08-09 09:34 +0000
        Re: C unit testing and regression testing Les Cargill <lcargill99@comcast.com> - 2013-08-09 07:52 -0500
  Re: C unit testing and regression testing Siri Cruise <chine.bleu@yahoo.com> - 2013-08-09 05:29 -0700
  Re: C unit testing and regression testing Roberto Waltman <usenet@rwaltman.com> - 2013-08-11 20:19 -0400
    Test-driven development (was Re: C unit testing and regression testing) Jorgen Grahn <grahn+nntp@snipabacken.se> - 2013-08-17 07:17 +0000
      Re: Test-driven development (was Re: C unit testing and regression   testing) Ian Collins <ian-news@hotmail.com> - 2013-08-17 19:40 +1200
      Re: Test-driven development (was Re: C unit testing and regression testing) Les Cargill <lcargill99@comcast.com> - 2013-08-17 11:40 -0500

csiph-web