doujingxi3356 2015-04-15 06:26
浏览 89
已采纳

如何在本地创建和使用我自己的golang软件包来运行此测试?

I'm new to golang working through coding exercises and I have all the following files in a directory called leap. I'm using gvm to run the golang executable (version 1.4), using a command such as "go test leap_test.go".

When I do go test leap_test.go I get the following results:

# command-line-arguments
leap_test.go:5:2: open /home/user/go/leap/leap: no such file or directory
FAIL    command-line-arguments [setup failed]
  1. How do I include the IsLeap() function so that the tests run correctly.
  2. Why is cases_test.go even included? It seems like leap_test.go is all you'd need for tests.

cases_test.go

package leap

// Source: exercism/x-common
// Commit: 945d08e Merge pull request #50 from soniakeys/master

var testCases = []struct {
    year        int
    expected    bool
    description string
}{
    {1996, true, "leap year"},
    {1997, false, "non-leap year"},
    {1998, false, "non-leap even year"},
    {1900, false, "century"},
    {2400, true, "fourth century"},
    {2000, true, "Y2K"},
}

leap_test.go

package leap

import (
    "testing"
    "./leap"
)

var testCases = []struct {
    year        int
    expected    bool
    description string
}{
    {1996, true, "a vanilla leap year"},
    {1997, false, "a normal year"},
    {1900, false, "a century"},
    {2400, true, "an exceptional century"},
}

    func TestLeapYears(t *testing.T) {
        for _, test := range testCases {
            observed := IsLeap(test.year)
            if observed != test.expected {
                t.Fatalf("%v is %s", test.year, test.description)
            }
        }
    }

leap.go

package leap

import(
    "fmt"
)

func IsLeap(year int) bool {
  return true
}
  • 写回答

1条回答 默认 最新

  • dounaidu0204 2015-04-15 07:02
    关注

    Command go

    Test packages

    Usage:

    go test [-c] [-i] [build and test flags] [packages] [flags for test binary]
    

    For example,

    leap/leap.go

    package leap
    
    func IsLeap(year int) bool {
        return true
    }
    

    leap/leap_test.go

    package leap
    
    import (
        "testing"
    )
    
    var testCases = []struct {
        year        int
        expected    bool
        description string
    }{
        {1996, true, "a vanilla leap year"},
        {1997, false, "a normal year"},
        {1900, false, "a century"},
        {2400, true, "an exceptional century"},
    }
    
    func TestLeapYears(t *testing.T) {
        for _, test := range testCases {
            observed := IsLeap(test.year)
            if observed != test.expected {
                t.Fatalf("%v is %s", test.year, test.description)
            }
        }
    }
    

    If $GOPATH is set to include the leap package directory:

    $ go test leap
    --- FAIL: TestLeapYears (0.00s)
        leap_test.go:22: 1997 is a normal year
    FAIL
    FAIL    leap    0.003s
    $
    

    Or, if you cd to the leap package directory:

    $ go test
    --- FAIL: TestLeapYears (0.00s)
        leap_test.go:22: 1997 is a normal year
    FAIL
    exit status 1
    FAIL    so/leap 0.003s
    $ 
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图2.0 版本点聚合中Marker的位置无法实时更新,如何解决呢?
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题