ich beschäftige mich nun schon seit einer Weile mit einem Problem im Zusammenhang mit CppUnit Tests. Ich habe folgende zwei Tests:
Code: Alles auswählen
#include "VectorOperationsTest.h"
#include "VectorOperations.h"
CPPUNIT_TEST_SUITE_REGISTRATION(VectorOperationsTest);
VectorOperationsTest::VectorOperationsTest() {
}
VectorOperationsTest::~VectorOperationsTest() {
}
void VectorOperationsTest::setUp() {
}
void VectorOperationsTest::tearDown() {
}
void VectorOperationsTest::testVectorDiff() {
const size_t diff = 1;
const size_t length = 5;
size_t one = 2;
gsl_vector* vectortoDiff;
vectortoDiff = gsl_vector_alloc(length+1);
gsl_vector_set_basis(vectortoDiff, one);
VectorOperations vectorOperations;
gsl_vector* result;
result = vectorOperations.vectorDiff(diff, length, vectortoDiff);
CPPUNIT_ASSERT(result->size == length);
CPPUNIT_ASSERT(gsl_vector_get(result, 2) == 1);
}
Code: Alles auswählen
#ifndef TIMODELSERVICETEST_H
#define TIMODELSERVICETEST_H
#include <cppunit/extensions/HelperMacros.h>
class TIModelServiceTest : public CPPUNIT_NS::TestFixture {
CPPUNIT_TEST_SUITE(TIModelServiceTest);
CPPUNIT_TEST(testGenerateTradeIndicatorModel);
CPPUNIT_TEST_SUITE_END();
public:
TIModelServiceTest();
virtual ~TIModelServiceTest();
void setUp();
void tearDown();
private:
void testGenerateTradeIndicatorModel();
};
#endif
Code: Alles auswählen
#include <cppunit/BriefTestProgressListener.h>
#include <cppunit/CompilerOutputter.h>
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/TestResult.h>
#include <cppunit/TestResultCollector.h>
#include <cppunit/TestRunner.h>
int main() {
// Create the event manager and test controller
CPPUNIT_NS::TestResult controller;
// Add a listener that colllects test result
CPPUNIT_NS::TestResultCollector result;
controller.addListener(&result);
// Add a listener that print dots as test run.
CPPUNIT_NS::BriefTestProgressListener progress;
controller.addListener(&progress);
// Add the top suite to the test runner
CPPUNIT_NS::TestRunner runner;
runner.addTest(CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest());
runner.run(controller);
// Print test in a compiler compatible format.
CPPUNIT_NS::CompilerOutputter outputter(&result, CPPUNIT_NS::stdCOut());
outputter.write();
return result.wasSuccessful() ? 0 : 1;
}
Code: Alles auswählen
#include "TIModelServiceTest.h"
#include "TradeIndicatorModelService.h"
CPPUNIT_TEST_SUITE_REGISTRATION(TIModelServiceTest);
TIModelServiceTest::TIModelServiceTest() {
}
TIModelServiceTest::~TIModelServiceTest() {
}
void TIModelServiceTest::setUp() {
}
void TIModelServiceTest::tearDown() {
}
void TIModelServiceTest::testGenerateTradeIndicatorModel() {
const size_t numberofObservations = 5;
TradeIndicatorModel tiModel;
TradeIndicatorModelService tradeIndicatorModelService;
tradeIndicatorModelService.generateTradeIndicatorModel(numberofObservations, tiModel);
gsl_vector* result = tiModel.GetLagIndicator();
CPPUNIT_ASSERT(result->size == numberofObservations);
tiModel.~TradeIndicatorModel();
delete result;
result = 0;
}
Code: Alles auswählen
#ifndef TIMODELSERVICETEST_H
#define TIMODELSERVICETEST_H
#include <cppunit/extensions/HelperMacros.h>
class TIModelServiceTest : public CPPUNIT_NS::TestFixture {
CPPUNIT_TEST_SUITE(TIModelServiceTest);
CPPUNIT_TEST(testGenerateTradeIndicatorModel);
CPPUNIT_TEST_SUITE_END();
public:
TIModelServiceTest();
virtual ~TIModelServiceTest();
void setUp();
void tearDown();
private:
void testGenerateTradeIndicatorModel();
};
#endif
Code: Alles auswählen
#include <cppunit/BriefTestProgressListener.h>
#include <cppunit/CompilerOutputter.h>
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/TestResult.h>
#include <cppunit/TestResultCollector.h>
#include <cppunit/TestRunner.h>
int main() {
// Create the event manager and test controller
CPPUNIT_NS::TestResult controller;
// Add a listener that colllects test result
CPPUNIT_NS::TestResultCollector result;
controller.addListener(&result);
// Add a listener that print dots as test run.
CPPUNIT_NS::BriefTestProgressListener progress;
controller.addListener(&progress);
// Add the top suite to the test runner
CPPUNIT_NS::TestRunner runner;
runner.addTest(CPPUNIT_NS::TestFactoryRegistry::getRegistry().makeTest());
runner.run(controller);
// Print test in a compiler compatible format.
CPPUNIT_NS::CompilerOutputter outputter(&result, CPPUNIT_NS::stdCOut());
outputter.write();
return result.wasSuccessful() ? 0 : 1;
}
Beim zweiten Test ist es allerdings abweichend: der Test scheint gar nicht zum Ende zu kommen. Im oberen grauen Balken steht durchweg '0.00%'. Darunter "Running tests, please wait..." Verwunderlich: Die Ausgabe im rechten Block des 'Test Results' Fensters zeigt immer an, dass der Test durchgelaufen ist und "OK" war.
Ich habe diese Tests schon viele Male laufen lassen und erhalte immer dieselben Ergebnisse.
Hat jemand, der sich mit den Tests, oder aber mit den Swing Containern von NetBeans (die ja die 'Test Results' Fenster darstellen) aus und kann hier zumindest eine Vermutung abgeben?
Simon