Heim  >  Fragen und Antworten  >  Hauptteil

Unit-Tests – einige Probleme im Zusammenhang mit der Code-Organisation beim C++-Testen

Ich bin ein unerfahrener C++-Programmierer und schreibe die meiste Zeit aus Gründen der Hausaufgaben ein Projekt in C++. Ich möchte die Tests selbst durchführen, aber ich habe keine Ahnung von Tests Nachdem ich dies gelesen hatte, entschied ich mich, das Catch-Test-Framework zu verwenden.

Als ich zuvor eine kleine C++-Aufgabe geschrieben habe, habe ich entweder cout<< direkt in der Hauptfunktion erstellt und sie dann vor der Übermittlung gelöscht, oder ich habe eine neue CPP-Datei erstellt, die Hauptfunktion hinzugefügt und die Hauptfunktion dann vorübergehend in umbenannt (Im Allgemeinen ändere ich den Hauptfunktionsnamen in main00 oder ähnliches), klicke auf „In XCode ausführen“, um vorübergehend zu testen, hauptsächlich um die Unsicherheit an einer bestimmten Stelle zu testen, und ändere ihn dann wieder, nachdem der Test abgeschlossen ist.

Aber ich finde die oben aufgeführten Methoden wirklich dumm und bringen alle Senioren zum Lachen.

Mein Projektverzeichnis sieht jetzt so aus (dies ist ein Job zum Implementieren von Minisql mit C++):

Derzeit hat jede Datei tatsächlich keinen Inhalt. Jeder Ordner stellt ein Modul dar und die Beziehung zwischen den einzelnen Modulen ist wie folgt:

Ich habe vor, einen Teil zu schreiben und einen Teil zu testen (z. B. zuerst BufferManager zu schreiben, wenn beim Test keine Probleme auftreten, fahren Sie mit dem Schreiben des nächsten Teils fort).

Daher habe ich nun folgende Fragen zur Organisation von Testdateien:

Soll ich die Testdateien im entsprechenden Moduldateiverzeichnis ablegen? Oder gibt es eine separate Testdatei?

Sollte jedes Modul eine separate Testdatei haben?

Außerdem habe ich festgestellt, dass, wenn ich zwei Testdateien schreibe, auch wenn ich sie auskommentiere #define CATCH_CONFIG_MAIN diese immer noch nicht normal ausgeführt werden kann, es sei denn, alle anderen Testdateien sind auskommentiert.

Wie soll ich außerdem diese Testdateien ausführen, nachdem ich die Eintragsdatei geschrieben habe (es gibt eine Hauptfunktion in NewSQL.cpp)? Kommentieren und kommentieren Sie immer noch ...

Ich finde die Frage, die ich gestellt habe, etwas zu dumm, aber ich möchte wirklich wissen, wie man den Test richtig schreibt und verwendet. Ich konnte im Internet keine sehr gezielte Antwort finden, also bin ich hierher gekommen, um zu fragen: Danke~

(Wenn Sie der Meinung sind, dass etwas nicht gut gemacht wurde, weisen Sie es bitte darauf hin und ich werde es ernsthaft korrigieren, aber bitte nicht persönlich angreifen. Wenn Ihre Antwort als Referenz sehr wertvoll ist, sende ich Ihnen auch eine private Nachricht, um zu fragen, ob Sie Sie benötigen einen bestimmten Betrag an roter Umschlagvergütung, Studentenparty, drücken Sie Ihre Gefühle aus)

Angehängtes Fangportal: https://github.com/philsquare...

ringa_leeringa_lee2720 Tage vor870

Antworte allen(1)Ich werde antworten

  • 给我你的怀抱

    给我你的怀抱2017-05-31 10:40:53

    我是应该把测试文件放在对应的模块文件目录下呢?还是单独有一个测试文件?

    各个模块是不是应该单独一个测试文件?

    另外我发现我写两个测试文件的话,就算我注释掉#define
    CATCH_CONFIG_MAIN这个还是无法正常运行,除非把别的测试文件都注释掉。

    另外等我写好了入口文件(NewSQL.cpp中有一个main函数),那该怎么运行这些测试文件?难道还是不断的注释和取消注释....

    测试代码和生产代码分开,命名上相关
    比如类A的测试类,叫AUnitTest 或者ATest 或者AUT

    各个模块测试文件分开

    测试文件有自己的入口文件

    关键在项目配置,测试项目以来生产代码,生产代码不以来测试代码。
    两个应该是可以生产两个可执行程序。按照这样的目标配置项目

    Antwort
    0
  • StornierenAntwort