Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erhalte ich Codeabdeckung durch Integrationstests für Go-Binärdateien?

Wie erhalte ich Codeabdeckung durch Integrationstests für Go-Binärdateien?

Barbara Streisand
Barbara StreisandOriginal
2024-10-30 12:32:27165Durchsuche

How to Get Code Coverage from Integration Tests for Go Binaries?

Codeabdeckung aus einer Go-Binärdatei erfassen

Frage:

Wie können Codeabdeckungsmetriken ermittelt werden? erfasst werden, wenn Integrationstests für eine Go-Binärdatei ausgeführt werden?

Antwort:

Während das native Go-Coverage-Tool nur mit Unit-Tests funktioniert, ist es dennoch möglich, Coverage zu sammeln Daten für Integrationstests.

Lösung:

Um dies zu erreichen:

  1. Erstellen Sie eine Testdatei, die ausgeführt wird die main()-Funktion:

    <code class="go">func TestMainApp(t *testing.T) {
        go main()
        // Start integration tests
    }</code>
  2. Führen Sie die Integrationstests innerhalb des main()-Tests aus:

    <code class="go">cmd := exec.Command("./mybin", "somefile1")
    cmd.Run()</code>
  3. Abdeckungsstatistiken sammeln:

    <code class="go">coverProfile := "coverage.out"
    test.RunMain()
    if err := testing.StartCoverage(coverProfile); err != nil {
        log.Fatalf("Coverage: %v", err)
    }
    defer testing.StopCoverage(coverProfile)</code>
  4. Abdeckungsbericht erstellen:

    <code class="go">if err := testing.RunTests(); err != nil {
        log.Fatalf("Coverage: %v", err)
    }
    cmd := exec.Command("go", "tool", "cover", "-html=coverage.out")
    cmd.Run()</code>

Zusätzliche Referenz:

  • [Erweitern Sie die Abdeckung mit externen Tests](https://blog.golang.org/cover-external-tests)

Das obige ist der detaillierte Inhalt vonWie erhalte ich Codeabdeckung durch Integrationstests für Go-Binärdateien?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn