【问题标题】:How to implement unit test program using golang?如何使用golang实现单元测试程序?
【发布时间】:2018-07-19 12:39:28
【问题描述】:

我看过很多博客,他们写了如何进行单元测试,但我会理解理论部分,但不理解如何实现测试用例,谁能告诉我如何实现第一个测试用例以更好地理解单元测试。在这里,我正在实现平均的小程序:-

文件夹结构是:-

main.go
average(Folder)----> math_test.go

两个文件中的代码是:-

ma​​in.go

 package main

 import "fmt"
 import "testcases/average"

 func main() {
    xs := []float64{1,2,3,4}
    avg := m.Average(xs)
    fmt.Println(avg) 
 }

ma​​th_test.go

package math

import "testing"

func TestAverage(t *testing.T) {
  var v float64
  v = Average([]float64{1,2})
  if v != 1.5 {
    t.Error("Expected 1.5, got ", v)
  }
 }

错误:- go build testcases/average:/home/iron/go/src/testcases/average 中没有非测试 Go 文件

帮助我,我非常感谢你。

【问题讨论】:

    标签: unit-testing testing go


    【解决方案1】:

    您必须使用@mkopriva 和@whitespace 所说的mainmath 更改包名称,并将它们放在同一个文件夹中,参见示例

    main.go

    package main
    
    
    func Sum(x int, y int) int {
      return x + y
    }
    
    func main() {
      Sum(5, 5)
    }
    

    math_test.go

    package main
    
    import "testing"
    
    func TestSum(t *testing.T) {
       total := Sum(5, 5)
       if total != 10 {
          t.Errorf("Sum was incorrect, got: %d, want: %d.", total, 10)
       }
    }
    

    输出:-

    通过 ok 测试用例 0.001s

    也是一个基本的测试示例。

    【讨论】:

    • 是的,它有效,但可以为我提供一个平均水平的例子
    【解决方案2】:

    这是因为您的测试文件位于package main。您可以将 main.go 更改为 package math,或将 math_test.go 更改为 package main。检查我的 git repo,here 我还没有写任何 main 函数。然而函数已经写好了,它们的输出用testing包检查。

    【讨论】:

    • 现在出现的错误是import "testcases/average" is a program, not an importable package
    • @whitespace 这不是真的,他们的测试文件在数学包中,它位于文件夹平均值中,该文件夹没有非测试文件,即。只有一个测试文件,这是他们的问题。
    • @mkopriva 你能告诉我我会怎么做吗
    • @puneet55667788 首先,您应该将包命名为与它们所在的文件夹相同的名称,这是 Go 中的约定,这意味着要么将文件夹平均重命名为 math,要么将包 math 重命名为平均。然后,您拥有测试文件的包 (*_test.go) 也需要包含您要测试的代码的非测试文件。例如。如果 math_test.go 有一个测试 func TestAverage 来测试一个名为 Average 的函数,那么你应该在同一个包中拥有一个没有 _test.go 的文件,例如math.go,它定义了Average函数。
    • 你的意思是把所有的代码合并到main.go@mkopriva
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-08
    • 2015-08-21
    • 2011-08-23
    • 2014-11-19
    • 2014-06-03
    • 1970-01-01
    相关资源
    最近更新 更多