Ich habe Probleme beim Kompilieren einer Datei mit einer Testvorrichtung mit Google Test in Visual Studio 2015. Die Klasse, die ich versuche, die Testvorrichtung für zu erstellen, heißt Counter.Standardkonstruktor der Testvorrichtung kann nicht referenziert werden
Die getestete Counter-Klasse verfügt über einen geschützten Standardkonstruktor, der verschiedene geschützte Membervariablen initialisiert. Diese Elementvariablen in der Klasse Counter enthalten Objekte, Zeiger auf const-Objekte, Ints und Doubles.
Der DefaultConstructor Test kann nicht mit der folgenden Fehlermeldung the default constructor of "CounterTest" cannot be referenced -- it is a deleted function
kompiliert werden.
Um zu klären, ich versuche, ein Counter-Objekt (mit seinem Standardkonstruktor) in der CounterTest-Klasse (Test Fixture) instanziieren, um über einzelne Tests zu verwenden.
// Counter.h
class Counter : public ConfigurationItem {
protected:
EventId startEventIdIn_;
int numStarts_;
CounterConfigurationItem_Step const* currentStep_;
double startEncoderPosMm_;
private:
FRIEND_TEST(CounterTest, DefaultConstructor);
};
// GTest_Counter.cpp
class CounterTest : public ::testing::Test {
protected:
Counter counter;
};
TEST_F(CounterTest, DefaultConstructor)
{
ASSERT_EQ(0, counter.numStarts_);
}
Was mache ich falsch? Ist es sogar möglich, dass ein Testgerät mit einer Klasse befreundet ist, die auf einen geschützten/privaten Mitgliederzugriff getestet wird? Vielen Dank!
Ich habe der Klasse ** CounterTest ** keinen nicht standardmäßigen Konstruktor hinzugefügt. Ich habe nichts aus der oben gezeigten ** CounterTest ** -Klasse übrig gelassen, es ist genau so, wie es in meinem tatsächlichen Code ist. Ich habe der Counter-Klasse seit Ihrem Kommentar einige zusätzliche Interface-Details hinzugefügt. – GnUfTw