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 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 R语言卸载之后无法重装,显示电脑存在下载某些较大二进制文件行为,怎么办
  • ¥15 java 的protected权限 ,问题在注释里