Jump to content


Photo
- - - - -

Suggestion: test classes inherit test methods


  • Please log in to reply
3 replies to this topic

#1 shb

shb
  • Members
  • 30 posts

Posted 14 September 2012 - 05:30 PM

The class SubCase.lvclass inherits from the test case myTests.lvclass (inheriting TestCase.lvclass). When loading SubCase.lvclass in VI Tester only the tests defined in this class are shown. I expected to also get the test VIs from the parent class. At least this is what I am used to from python unittest.


I tried this because I have similar VIs I want to do 3 test on each. The connector pane of the VIs are similar, but some data types are different. So I wanted to handle this differences in a VI which is used in all 3 tests. In the subclasses I wanted only to overwrite this VI.
My words are probably unclear, maybe this structur explains more.

myTests_A.lvclass, inheriting TestCase.lvclass
CommonVI.vi
Test 1.vi, calling CommonVI.vi
Test 2.vi, calling CommonVI.vi
Test 3.vi, calling CommonVI.vi

myTests_B.lvclass, inherinting myTests_A.lvclass
CommonVI.vi
  • 0

#2 shb

shb
  • Members
  • 30 posts

Posted 14 September 2012 - 08:22 PM

I just stumbled over the application method "LabVIEW Class:All Methods of LVClass Method" which also lists the inherited VIs.
  • 0

#3 Omar Mussa

Omar Mussa
  • Members
  • 92 posts
  • Gender:Male

Posted 17 September 2012 - 02:48 PM

This is an interesting idea and one we've thought about as well. One question I have - if you run the parent test case directly, do you skip execution of the tests in the parent class? How does the parent test case get treated? Ideas are welcome.
  • 0

#4 shb

shb
  • Members
  • 30 posts

Posted 18 September 2012 - 07:59 AM

I see several possibilities: (parent class is myTests_A.lvclass)
  • mark the parent class as abstract
  • use the skip VI in ComonVI.vi in the parent class
  • implement the first test case in the parent class (probably not a clean design)
The decision of choosing the design could be left to the test case writer.

When the parent class is not in the project (only in dependencies), it is not loaded with the project anyway. So it is easy to leave it out.
  • 0