Maison  >  Article  >  développement back-end  >  Comment implémenter le processus de développement piloté par les tests des fonctions Golang ?

Comment implémenter le processus de développement piloté par les tests des fonctions Golang ?

WBOY
WBOYoriginal
2024-04-29 08:03:01959parcourir

Le processus TDD permet de garantir l'exactitude et la documentation comportementale des fonctions Go. Étapes : 1) Écrivez un test à l'aide de la commande go test, définissez les fonctions et les cas de test. 2) Écrivez un code de fonction qui satisfait au comportement du scénario de test. 3) Exécutez la commande go test pour vérifier si la fonction répond aux attentes. 4) Répétez les étapes 1 à 3 si nécessaire pour améliorer l'implémentation de la fonction et améliorer les cas de test jusqu'à ce que tous les tests réussissent.

Comment implémenter le processus de développement piloté par les tests des fonctions Golang ?

Processus TDD (Test Driven Development) pour les fonctions Golang

Test Driven Development (TDD) est un processus de développement logiciel dans lequel les développeurs écrivent d'abord des tests, puis écrivent le code nécessaire pour satisfaire ces tests. Pour les fonctions du langage Go, le processus TDD peut aider à garantir l'exactitude de la fonction et à fournir une documentation sur son comportement.

Étapes

  1. Écrire des tests : Utilisez la commande go test pour créer un fichier de test et définir la fonction à tester et les cas de test correspondants. go test 命令创建一个测试文件,定义要测试的函数以及相应的测试用例。
package main

import (
    "testing"
)

func TestAdd(t *testing.T) {
    tests := []struct {
        a, b int
        want int
    }{
        {1, 2, 3},
        {3, 4, 7},
    }
    for _, tc := range tests {
        got := Add(tc.a, tc.b)
        if got != tc.want {
            t.Errorf("Add(%d, %d) = %d, want %d", tc.a, tc.b, got, tc.want)
        }
    }
}
  1. 编写代码:编写实现测试用例中指定行为的函数。
package main

import "fmt"

func Add(a, b int) int {
    return a + b
}

func main() {
    fmt.Println(Add(1, 2)) // 输出:3
}
  1. 运行测试:运行 go test 命令验证函数是否符合预期。
$ go test
ok      test.go   0.000s
  1. 重复:如有必要,重复以上步骤,编写更多测试用例并完善函数实现,直到所有测试都能通过。

实战案例

假设你想要实现一个 Golang 函数 isPrime

package main

import (
 "testing"
)

func TestIsPrime(t *testing.T) {
 tests := []struct {
     n     int
     prime bool
 }{
     {1, false},
     {2, true},
     {3, true},
     {4, false},
     {19, true},
     {100, false},
 }
 for _, tc := range tests {
     got := IsPrime(tc.n)
     if got != tc.prime {
         t.Errorf("IsPrime(%d) = %t, want %t", tc.n, got, tc.prime)
     }
 }
}
    1. Écrire du code :

      Écrivez une fonction qui implémente le comportement spécifié dans le scénario de test.

      package main
      
      import "math"
      
      func IsPrime(n int) bool {
       if n <= 1 {
           return false
       }
       for i := 2; i <= int(math.Sqrt(float64(n))); i++ {
           if n%i == 0 {
               return false
           }
       }
       return true
      }
      
      func main() {
       fmt.Println(IsPrime(19)) // 输出:true
      }

      1. Exécutez le test :
      2. Exécutez la commande go test pour vérifier que la fonction est comme prévu.

        $ go test
        ok      test.go   0.000s

          Répéter :
        1. Si nécessaire, répétez les étapes ci-dessus, écrivez plus de cas de test et améliorez l'implémentation de la fonction jusqu'à ce que tous les tests réussissent.
        2. Cas pratique

        Supposons que vous souhaitiez implémenter une fonction Golang isPrime pour déterminer si un nombre est premier. Le processus TDD peut se dérouler comme suit : 🎜🎜🎜🎜🎜 Écrire des tests : 🎜🎜rrreee🎜🎜🎜🎜 Écrire du code : 🎜🎜rrreee🎜🎜🎜🎜Exécuter des tests : 🎜🎜rrreee🎜🎜

      Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

      Déclaration:
      Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn