[GO] Schreiben Sie einen tabellengesteuerten Test in C.

Einführung

Mir ist aufgefallen, dass der von Go empfohlene tabellengesteuerte Test auch in C geschrieben werden kann.

Gehen Sie tischgesteuerten Test

Tabellengesteuerter Test wird für Go-Tests empfohlen. Das Paar aus Dateneingabe und erwartetem Wert, das dem Testziel gegeben wird, wird als ein Testfall behandelt, und die Liste des erwarteten Werts und des gemessenen Werts wird in der Tabelle angezeigt.

Wenn Sie beispielsweise einen Test für die Methode gcd () tabellengesteuert schreiben:

gcd_test.go


func TestGcd(t *testing.T) {
	cases := []struct {
		a, b int
		z    int
	}{
		{12, 8, 4},
		{3, 7, 1},
	}

	for _, c := range cases {
		if gcd(c.a, c.b) != c.z {
			t.Errorf("expected gcd(%v,%v) == %v\n", c.a, c.b, c.z)
		}
	}

}

Go kann gleichzeitig Strukturdefinitionen und Variableninitialisierungen schreiben. Die Initialisierung von Testfällen ist mit der Strukturliteral-Syntax{}einfach und typsicher. Der Code ist sehr einfach zu lesen, da Sie sich nur auf die Testdaten konzentrieren können.

C tischgesteuerter Test

Ich habe auch einen Test für "gcd ()" in C in tabellengesteuerten geschrieben. Auch in C können Strukturdeklaration und Variableninitialisierung gleichzeitig durchgeführt werden. Die Initialisierung kann mit der Strukturliteral-Syntax{}typsicher sein.

gcd_test.c


#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))

int test_gcd() {
	struct {
		int a, b;
		int z;
	} cases[] = {
		{12, 8, 4},
		{3, 7, 1},
	};

	for (int i = 0; i < ARRAY_SIZE(cases); ++i) {
		if (gcd(cases[i].a, cases[i].b) != cases[i].z) {
			printf("expected gcd(%d,%d) == %d\n", cases[i].a, cases[i].b, cases[i].z);
		}
	}
}

Im Vergleich zu Go gab es keinen großen Unterschied in Bezug auf Beschreibung und Lesbarkeit, und ich konnte einen tabellengesteuerten Test in C-Sprache schreiben.

abschließend

Go wird oft als einfaches C bezeichnet, aber es ist auch eine gute Idee, die Kultur von Go in C zu importieren.

Recommended Posts

Schreiben Sie einen tabellengesteuerten Test in C.
Schreiben Sie den Test in die Python-Dokumentzeichenfolge
Ich möchte in Python schreiben! (2) Schreiben wir einen Test
Schreiben Sie eine Dichotomie in Python
Modultest mit mehreren Instanzen in C-Sprache
ABC166 in Python A ~ C Problem
Schreiben Sie A * (A-Stern) -Algorithmen in Python
Schreiben Sie Selentestcode in Python
Löse ABC036 A ~ C mit Python
Schreiben Sie ein Kreisdiagramm in Python
Schreiben Sie das Vim-Plugin in Python
Schreiben Sie eine Suche mit Tiefenpriorität in Python
Löse ABC037 A ~ C mit Python
Schreiben Sie einen C-Sprach-Unit-Test in Python
Löse ABC175 A, B, C mit Python
Verwendung von Google Test in C-Sprache
Schreiben Sie eine kurze Eigenschaftsdefinition in Python
Schreiben Sie die O_SYNC-Datei in C und Python
Schreiben Sie ein Caesar-Verschlüsselungsprogramm in Python
Schreiben Sie eine einfache Giermethode in Python
Schreiben Sie ein einfaches Vim-Plugin in Python 3
Erstellen Sie in 1 Minute eine Vim + Python-Testumgebung
Richten Sie einen Test-SMTP-Server in Python ein.
Richten Sie einen UDP-Server in der Sprache C ein
Rufen Sie Python-Skripte aus Embedded Python in C ++ / C ++ auf
Ich habe versucht, ein Python 3-Modul in C hinzuzufügen
Wie schreibe ich ein benanntes Tupeldokument im Jahr 2020?
Fühlen Sie sich frei, einen Test mit der Nase zu schreiben (im Fall von + gevent)
Verarbeiten Sie Signale in C-Sprache
Versuchen Sie, ein Python-Modul in C-Sprache zu erstellen
Schreiben Sie ein super einfaches molekulardynamisches Programm in Python
Schreiben Sie DCGAN mit Keras
Schreiben Sie Dekorateur in der Klasse
Ich habe versucht, Google Test und CMake in C zu verwenden
Greifen Sie auf MongoDB in C zu
Versuchen Sie, Python mit pybind11 in ein C ++ - Programm einzubetten
Schreiben Sie Python in MySQL
Weiter Python in C-Sprache
diktieren in diktieren Macht ein Diktat ein Diktat
Schreiben Sie in Python ein logarithmisches Histogramm auf die x-Achse
Schreiben Sie Code in UnitTest, eine Python-Webanwendung
Löse den Atcoder ABC176 (A, B, C, E) in Python
C-API in Python 3
Es ist schwer, einen sehr einfachen Algorithmus in PHP zu schreiben
Schreiben Sie ein Co-Autorennetzwerk in einem bestimmten Feld mit Informationen von arxiv
So schreiben Sie einen Test für die Verarbeitung mit BigQuery
Erweitern Sie Python in C ++ (Boost.NumPy)
Einbettung der Maschinensprache in die Sprache C.
Machen Sie einen Screenshot in Python
Schreiben Sie Pandec-Filter in Python
Heap-Sortierung in C-Sprache
Erstellen Sie eine Funktion in Python
Erstellen Sie ein Wörterbuch in Python
Schreiben Sie die Standardeingabe in den Code
Schreiben Sie die Beta-Distribution in Python
Algorithmus in Python (Haupturteil)
Schreiben Sie eine Kerneldichtefunktion
Schreiben Sie Python in Rstudio (reticulate)