Sorry someone broke the thread mode... Ignore my previous mail then...
With UnitTest++ I build multiple programs. Each program has a thematic collection of tests, reaching from a few like 5 to many like 500. All tests are integrated into the IDE and run as post build step. Most tests are unit tests, but often I have one collection that contain acceptance tests, these run relatively long and are not part of the normal solution/project. Theses are run on demand, rather then a post build step. If you have a naming scheme for your tests you can create a predicate and use that... (see my previous mail). Or whait until I refactored Vlad's WildcardTestPredicate (aka RegexTestPredicate) and use that. Sean On Mon, Feb 1, 2010 at 9:28 PM, David Lind <davidkl...@gmail.com> wrote: > I'm going to be creating a tutorial on > http://unittestcpp.rioki.org/tutorials soon. > > Because all unit tests get executed, by default, immediately after they are > built, were I work we needed the ability to only have the most rudimentary > tests executed at build and the rest are skipped. The more advanced tests > executed later. We came up with the following criterion: > > #define TEST_LEVEL_0 0 // Cursory tests > #define TEST_LEVEL_1 1 // Cursory tests > #define TEST_LEVEL_2 2 // Cursory tests > #define TEST_LEVEL_3 3 // Cursory tests > #define TEST_LEVEL_4 4 // Deepest, slowest, longest tests > #define TEST_LEVEL_5 5 // Fragile / driver related tests > > One of the features of my patch is the addition of TEST_LEVEL(Name, > TestLevel) and TEXT_FIXTURE_LEVEL(Fixture, Name, TestLevel) macros. > The "test level" of the TEST(Name) and TEST_FIXTURE(Fixture, Name) are 0. > > The "test level" value is specified when the unit test is written. The "run > level" is specified at run time. For example, when a "run level" value of 2 > is specified, all tests that have a "test level" value of 2 and less are > executed. All other tests are skipped. The "run level" value is a parameter > to RunAllTests(). > > --==-- > DKL > > On Mon, Feb 1, 2010 at 11:27 AM, Michael Smith <smit...@ucalgary.ca> wrote: >> >> I am not sure what this run level is -- but we have certain tests where >> in the prototype embedded system the easiest path to fast development is >> via a human intervention test -- and we need the ability to declare a >> test at a HUMAN_INVENTION_CURRENTLY_REQUIRED level and not run frequently >> >> Basically we can set a global run_level and have a macro within a test >> TEST_LEVEL(this_test_run_level) >> >> which is essentially a macro of if (this_test_run_level) < global_level { >> >> message(this test deactivated" >> return: >> >> It's actually a little more complicated than that as we do some >> interaction with a GUI controlling run-levels of individual groups of >> files >> >> Not sure if that clarifies how others might want to use a run_level >> option >> >> Mike Smith >> >> Clark Gaebel wrote: >> > What's runLevel? >> > >> > On 01/02/2010 12:23 PM, David Lind wrote: >> > >> >> I have added some command parameters To RunAllTests in my patch. They >> >> are >> >> runLevel and verboseMode. I have also added three methods, >> >> RunTestSuiteTestName, RunTestSuite, and RunTestName. >> >> >> >> >From TestRunner.h >> >> int RunAllTests(unsigned int const runLevel = 0); >> >> int RunTestSuite(char const* suiteName, unsigned int const runLevel = >> >> 0); >> >> int RunTestName(char const* testName, unsigned int const runLevel = 0); >> >> int RunTestSuiteTestName(char const* suiteName, char const* testName, >> >> unsigned int const runLevel = 0); >> >> >> >> I still need to write a tutorial for my patch. >> >> >> >> --==-- >> >> DKL >> >> >> >> On Mon, Feb 1, 2010 at 7:34 AM, Mike Smith <smit...@ucalgary.ca> wrote: >> >> >> >> >> >>> If you are planning to do that -- please think ahead about other >> >>> possible run time switches as params to Run All Tests -- it would be >> >>> easier to have a structure that could be parsed with "english" >> >>> switches >> >>> rather than just parameters that have to be placed in a particular >> >>> order. >> >>> >> >>> Even if we decided not to put in all the run-time switches in the >> >>> general UnitTest+ release, having that interface in place means that >> >>> people could customize in a common way. >> >>> >> >>> As an instructor using UnitTest++ in classes, one of the most useful >> >>> (to >> >>> the students) "run-time switch" we added to RunAllTests was the >> >>> ability >> >>> to "Show Successes" -- meaning the system reported on all asserts >> >>> that >> >>> passed -- as well as those that failed. It was a very strong support >> >>> mechanism for people just starting >> >>> >> >>> Since we are also using UnitTest++ as part of a test driven design >> >>> tool, >> >>> we also added another set of macros for expected failures XF_CHECK >> >>> for >> >>> the design situation where we (the students) had put some asserts in >> >>> -- >> >>> and then decided not to complete the implementation of the feature at >> >>> this particular time. -- we use a run time switch for the reporting >> >>> the >> >>> expected failures >> >>> >> >>> Thanks >> >>> Mike Smith >> >>> >> >>> Clark Gaebel wrote: >> >>> >> >>>> UT++ doesn't even get input from the command line afaik. We'd have to >> >>>> change the params to RunAllTests. >> >>>> >> >>>> On 31/01/2010 4:57 PM, Sean Farrell wrote: >> >>>> >> >>>> >> >>>>> Hold the phone... >> >>>>> >> >>>>> look at the implementation of: TestRunner::RunTest and >> >>>>> UNITTEST_TIME_CONSTRAINT? Is there not a possible way to implement >> >>>>> it? >> >>>>> >> >>>>> For the polymorphic part... Just instantiate the class, always or >> >>>>> once >> >>>>> for the entire run, jut don't call the methods that do the actual >> >>>>> tracking. You can also keep a boolean that can be enabled or >> >>>>> disabled >> >>>>> in the class. >> >>>>> >> >>>>> Sean >> >>>>> >> >>>>> On Sun, Jan 31, 2010 at 10:32 PM, Clark Gaebel >> >>>>> <cg.wowus...@gmail.com> >> >>>>> >> >>> wrote: >> >>> >> >>>>>> Hm, I see what you mean, but the thing is... now I've gotta get >> >>>>>> data >> >>>>>> from the command line, filter it through the levels of abstraction >> >>>>>> that >> >>>>>> are in place, and then... finally... use a polymorphic leak >> >>>>>> detector to >> >>>>>> select the right one. I don't think I'm up to the challenge. You're >> >>>>>> welcome to try though! >> >>>>>> >> >>>>>> By the way, the test fixture design is causing me headaches, I have >> >>>>>> to >> >>>>>> have duplicate code in TEST_FIXTURE_EX and in TEST_EX. >> >>>>>> >> >>>>>> I think I'll add SetUp and TearDown methods in class Test, then the >> >>>>>> fixture can implement them with the construction and destruction of >> >>>>>> the >> >>>>>> fixture. The default TEST would just replace them with null >> >>>>>> functions. >> >>>>>> >> >>>>>> Is this even do-able? Is it smart? I sure hope so! >> >>>>>> >> >>>>>> On 31/01/2010 4:27 PM, Sean Farrell wrote: >> >>>>>> >> >>>>>> >> >>>>>>> Here is the problem: >> >>>>>>> >> >>>>>>> You build UT++ one for release and debug. Put it up in binary form >> >>>>>>> for >> >>>>>>> a dozen project to use. Not all projects and developers want leak >> >>>>>>> detection to run all the time. A runtime switch, one that is given >> >>>>>>> at >> >>>>>>> RunTests like the minimum test runtime, is a good option. That >> >>>>>>> option >> >>>>>>> can the be enabled or disabled with #ifndef. >> >>>>>>> >> >>>>>>> This deployment use case is a very common one. I advise against it >> >>>>>>> and >> >>>>>>> tell people to use the vsproj files (or Makefile) so that build >> >>>>>>> settings are synced. But that means that they have to keep one >> >>>>>>> source >> >>>>>>> tree of UT per project and that is "error prone" and "wasteful". >> >>>>>>> Sooo... >> >>>>>>> >> >>>>>>> Sean >> >>>>>>> >> >>>>>>> On Sun, Jan 31, 2010 at 10:19 PM, Clark Gaebel >> >>>>>>> <cg.wowus...@gmail.com> >> >>>>>>> >> >>> wrote: >> >>> >> >>>>>>>> Ehhh, runtime switch? What happened to "simple as possible"? >> >>>>>>>> >> >>>>>>>> I like keeping all minor configurations like that in one header >> >>>>>>>> file >> >>>>>>>> called, say, config.h. >> >>>>>>>> >> >>>>>>>> I'll try out polymorphism, looks promising. >> >>>>>>>> >> >>>>>>>> On 31/01/2010 4:14 PM, Sean Farrell wrote: >> >>>>>>>> >> >>>>>>>> >> >>>>>>>>> How about you just use the same solution like TimeHelpers.*. >> >>>>>>>>> Alternatively use polymorphism: a Win32LeakDetector and a >> >>>>>>>>> NullLeakDetector class. >> >>>>>>>>> >> >>>>>>>>> Nevertheless; leak detection should be a runtime switch with no >> >>>>>>>>> overhead when off. >> >>>>>>>>> >> >>>>>>>>> Sean >> >>>>>>>>> >> >>>>>>>>> On Sun, Jan 31, 2010 at 10:08 PM, Clark Gaebel <cg.wowus.cg@ >> >>>>>>>>> >> >>> gmail.com> wrote: >> >>> >> >>> >> >>> http://github.com/wowus/unittest-cpp/commit/eede1787ab28ce420ada7b74dbd969f7a59145bd >> >>> >> >>>>>>>>>> A bit easier to use solution. >> >>>>>>>>>> >> >>>>>>>>>> Although the #ifdef hell going on in LeakDetector.cpp is >> >>>>>>>>>> killing >> >>>>>>>>>> >> >>> me. If >> >>> >> >>>>>>>>>> anyone has a better/cleaner way to do that, by all means submit >> >>>>>>>>>> a >> >>>>>>>>>> >> >>> patch. >> >>> >> >>>>>>>>>> Working on a EXPECT_LEAK macro now. >> >>>>>>>>>> >> >>>>>>>>>> On 31/01/2010 4:06 PM, Sean Farrell wrote: >> >>>>>>>>>> >> >>>>>>>>>> >> >>>>>>>>>>> On Sun, Jan 31, 2010 at 8:19 PM, Patrick Johnmeyer < >> >>>>>>>>>>> >> >>> pjohnme...@gmail.com> wrote: >> >>> >> >>>>>>>>>>>> On Sun, Jan 31, 2010 at 12:21 PM, Sean Farrell < >> >>>>>>>>>>>> >> >>> sean.farr...@rioki.org> >> >>> >> >>>>>>>>>>>> wrote: >> >>>>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>>>>> I have a better problem for you. For example you use a >> >>>>>>>>>>>>> garbage >> >>>>>>>>>>>>> collector for C/C++ like this one: >> >>>>>>>>>>>>> http://www.hpl.hp.com/personal/Hans_Boehm/gc/ The checking >> >>>>>>>>>>>>> code >> >>>>>>>>>>>>> >> >>> will >> >>> >> >>>>>>>>>>>>> flag almost all tests as memory errors. Leak detection is >> >>>>>>>>>>>>> really >> >>>>>>>>>>>>> useful, but It should be an option that is turned on (or >> >>>>>>>>>>>>> off). >> >>>>>>>>>>>>> >> >>> Not >> >>> >> >>>>>>>>>>>>> hard coded into the library. For example I don't use the >> >>>>>>>>>>>>> time >> >>>>>>>>>>>>> constants at all. Since I don't care for runtime in the >> >>>>>>>>>>>>> Tests. >> >>>>>>>>>>>>> >> >>>>>>>>>>>>> >> >>>>>>>>>>>> Architecturally, instantiating an object that decorates a >> >>>>>>>>>>>> >> >>> TestRunner or >> >>> >> >>>>>>>>>>>> TestReporter might be a good way to explicitly enable memory >> >>>>>>>>>>>> leak >> >>>>>>>>>>>> >> >>> detection >> >>> >> >>>>>>>>>>>> logic. >> >>>>>>>>>>>> >> >>>>>>>>>>>> >> >>>>>>>>>>> I don't know if I can follow you. Please elaborate on your >> >>>>>>>>>>> >> >>> proposed solution... >> >>> >> >>>>>>>>>>> Sean >> >>>>>>>>>>> >> >>>>>>>>>>> >> >>>>>>>>>>> >> > >> > >> > ------------------------------------------------------------------------------ >> > The Planet: dedicated and managed hosting, cloud storage, colocation >> > Stay online with enterprise data centers and the best network in the >> > business >> > Choose flexible plans and management services without long-term >> > contracts >> > Personal 24x7 support from experience hosting pros just a phone call >> > away. >> > http://p.sf.net/sfu/theplanet-com >> > _______________________________________________ >> > unittest-cpp-devel mailing list >> > unittest-cpp-devel@lists.sourceforge.net >> > https://lists.sourceforge.net/lists/listinfo/unittest-cpp-devel >> > >> > >> > >> >> -- >> Michael Smith Ph. D., >> Professor, Department of Electrical and Computer Engineering. >> Adjunct Professor, Department of Radiology, University of Calgary. >> Analog Devices University Ambassador. >> >> Electrical and Computer Engineering, Voice: (+1) 403-220-6142 >> University of Calgary, Calgary, Fax: (+1) 403-282-6855 >> Alberta, Canada T2N1N4 Email: mike.sm...@ucalgary.ca >> >> Experience can't be taught, experience can only be earned. >> >> >> >> ------------------------------------------------------------------------------ >> The Planet: dedicated and managed hosting, cloud storage, colocation >> Stay online with enterprise data centers and the best network in the >> business >> Choose flexible plans and management services without long-term contracts >> Personal 24x7 support from experience hosting pros just a phone call away. >> http://p.sf.net/sfu/theplanet-com >> _______________________________________________ >> unittest-cpp-devel mailing list >> unittest-cpp-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/unittest-cpp-devel > > > ------------------------------------------------------------------------------ > The Planet: dedicated and managed hosting, cloud storage, colocation > Stay online with enterprise data centers and the best network in the > business > Choose flexible plans and management services without long-term contracts > Personal 24x7 support from experience hosting pros just a phone call away. > http://p.sf.net/sfu/theplanet-com > _______________________________________________ > unittest-cpp-devel mailing list > unittest-cpp-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/unittest-cpp-devel > > ------------------------------------------------------------------------------ The Planet: dedicated and managed hosting, cloud storage, colocation Stay online with enterprise data centers and the best network in the business Choose flexible plans and management services without long-term contracts Personal 24x7 support from experience hosting pros just a phone call away. http://p.sf.net/sfu/theplanet-com _______________________________________________ unittest-cpp-devel mailing list unittest-cpp-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/unittest-cpp-devel