Ich verwende den Google -Test mit parametrisierten Tests und möchte die richtige Zeilennummer in der Testausgabe sehen, damit ich schnell den spezifischen Testfall finden kann, der fehlgeschlagen ist. />
#include
#include
class TracedName {
public:
TracedName(std::string name, std::string filename, int line):
m_name(std::move(name)), m_filename(std::move(filename)), m_lineNumber(line)
{
}
std::string_view operator()() const { return m_name; }
::testing::ScopedTrace trace() const
{
return {m_filename.c_str(), m_lineNumber, m_name.c_str()};
}
private:
std::string m_name;
std::string m_filename;
int m_lineNumber;
};
#define TRACED_NAME(name) TracedName(name, __FILE__, __LINE__)
struct TestInput {
std::string value;
};
struct TestCase {
TracedName name;
TestInput input;
bool expected;
};
class ParameterizedTestSuite : public ::testing::TestWithParam {};
TEST_P(ParameterizedTestSuite, Test) {
const auto& param = GetParam();
const auto trace = param.name.trace(); // Trying to get the trace to point to the test case
EXPECT_EQ(param.input.value == "valid", param.expected);
}
INSTANTIATE_TEST_SUITE_P(
MyTests,
ParameterizedTestSuite,
::testing::Values(
TestCase{
.name = TRACED_NAME("ValidInput"),
.input = {.value = "valid"},
.expected = true,
},
TestCase{
.name = TRACED_NAME("InvalidInput"), // I want error message to point to THIS line
.input = {.value = "invalid"},
.expected = true, // This will fail
}
)
);
Aktuelles Verhalten
Wenn der Test fehlschlägt, erhalte ich eine Ausgabe mit Zeilennummern, die darauf hinweisen, wo es instanziiert, wo der fehlgeschlagene Testfall deklariert ist. Traced_name ("InvalidInput") ist definiert, sodass ich bei der Betrachtung der Terminalausgabe schnell zum fehlerhaften Testfall wechseln kann. Ist das überhaupt möglich?>
Ich verwende den Google -Test mit parametrisierten Tests und möchte die richtige Zeilennummer in der Testausgabe sehen, damit ich schnell den spezifischen Testfall finden kann, der fehlgeschlagen ist. />[code]#include
#include
class TracedName { public: TracedName(std::string name, std::string filename, int line): m_name(std::move(name)), m_filename(std::move(filename)), m_lineNumber(line) { }
class ParameterizedTestSuite : public ::testing::TestWithParam {};
TEST_P(ParameterizedTestSuite, Test) { const auto& param = GetParam(); const auto trace = param.name.trace(); // Trying to get the trace to point to the test case EXPECT_EQ(param.input.value == "valid", param.expected); }
INSTANTIATE_TEST_SUITE_P( MyTests, ParameterizedTestSuite, ::testing::Values( TestCase{ .name = TRACED_NAME("ValidInput"), .input = {.value = "valid"}, .expected = true, }, TestCase{ .name = TRACED_NAME("InvalidInput"), // I want error message to point to THIS line .input = {.value = "invalid"}, .expected = true, // This will fail } ) ); [/code] Aktuelles Verhalten Wenn der Test fehlschlägt, erhalte ich eine Ausgabe mit Zeilennummern, die darauf hinweisen, wo es instanziiert, wo der fehlgeschlagene Testfall deklariert ist. Traced_name ("InvalidInput") ist definiert, sodass ich bei der Betrachtung der Terminalausgabe schnell zum fehlerhaften Testfall wechseln kann. Ist das überhaupt möglich?>
Ich habe wahrscheinlich 2 Tage Forschung online durchgeführt und kann nichts Konkretes finden, insbesondere für Android/iOS .NET MAUI -Apps. Weiß jemand, wie ich dies zu einer Möglichkeit machen kann?
Ich versuche, Umgebungsvariablen mit OnSchedule zu verwenden. Es akzeptiert jedoch nur einen String , nicht einen Ausdruck oder ähnliches. Obwohl Value () es kompiliert, wird es nicht tatsächlich...
Ich möchte ein C-Präprozessormakro mit Parameter N definieren, das eine Deklaration für ein benutzerdefiniertes C++-Literal mit dem Suffix _uN erstellt.
#define DEFINE_LITERAL(N) int operator...
Wie erhalte ich den richtigen Auswahlwert in PHP? Ich meine, wie stelle ich die Auswahl ein, wenn ich den Wert erhalten habe?
Ich habe versucht, diese Methoden zu verwenden, aber immer noch nicht...
Ich habe eine Klasse Physicsgine , die die Spiellogik zusammenfasst. Intern wird eine Ball Instanz in einem privaten Feld enthält und bei jedem Update überprüft es auf Wandkollisionen und ruft...