在Eclipse中使用两个Go文件时遇到的问题

在Eclipse中使用两个Go文件时遇到的问题 大家好,我是Go语言的新手,正在使用Eclipse进行Go开发。

有人知道如何在Eclipse中构建和运行包含两个文件的项目吗?我创建了一个包含测试函数的第一个文件,以及一个定义结构体数组的第二个文件。它们位于相同的src目录和相同的包中。

第一个文件:

import ( "math" "testing")
func TestData(t *testing.T) { 
const precision = 0.01
for _, tc := range testExamples {
actual := DataTest(tc.FirstValue, tc.SecondValue)
if ... {
    t.Fatalf("FAIL: %s\nExpected: %#v\nActual: %#v", tc.description, tc.expected, actual)
}
t.Logf("PASS: %s", tc.description)
}
}

第二个文件:

var testCases = []struct {
description string
valuex      string
valuey      string
expected    float64
}{
{
description: "example1",
FirstValue:      xxxxx,
SecondValue:     yyyyy,
expected:    10,
},{
description: "example2",
FirstValue:      xxxxx,
SecondValue:     yyyyy,
expected:    280,
}
}

在第一个文件中,Eclipse报告:undefined: testCases

我认为问题可能与自动编译没有考虑到这两个文件有关。有人有什么建议吗?

谢谢


8 回复

你写了包声明吗?你这里的示例中缺少了包声明…


你有什么建议吗? 谢谢

您的函数是否在 main 函数内部被调用?如果没有,请尝试在该函数内部调用它们。

是的,很抱歉。我忘记在帖子中写明,但在这两个文件中我都写了包声明:package main。

在终端中使用 go build 能正常工作吗?

// 代码示例
func main() {
    fmt.Println("hello world")
}

我没有在我的应用程序中放置主函数,因为我似乎理解执行测试函数不是必需的。

我尝试手动构建,但总是遇到相同的错误,就好像它没有看到我在另一个go文件中声明的测试用例一样。

你有什么建议吗?
即使在使用测试用例时,是否仍然需要使用主函数?

很抱歉这么晚才回复,因为最近工作太忙时间不够。

不过,现在说这些可能已经太迟了。重新阅读后发现您的问题是关于测试的。老实说,我还没有学习Go语言的测试相关内容,所以很抱歉无法提供帮助。真的非常抱歉。

在Eclipse中处理多个Go文件时,出现"undefined: testCases"错误通常是因为Go工具没有同时编译所有相关文件。以下是解决方案:

  1. 确保两个文件都在同一个包中(package声明相同)
  2. 使用正确的构建命令编译所有文件

示例代码结构:

第一个文件 main_test.go

package main

import (
    "math"
    "testing"
)

func TestData(t *testing.T) {
    const precision = 0.01
    for _, tc := range testCases {
        actual := DataTest(tc.FirstValue, tc.SecondValue)
        diff := math.Abs(actual - tc.expected)
        if diff > precision {
            t.Fatalf("FAIL: %s\nExpected: %#v\nActual: %#v", tc.description, tc.expected, actual)
        }
        t.Logf("PASS: %s", tc.description)
    }
}

第二个文件 test_data.go

package main

var testCases = []struct {
    description string
    FirstValue  string
    SecondValue string
    expected    float64
}{
    {
        description: "example1",
        FirstValue:  "xxxxx",
        SecondValue: "yyyyy",
        expected:    10,
    }, {
        description: "example2",
        FirstValue:  "xxxxx",
        SecondValue: "yyyyy",
        expected:    280,
    },
}

在Eclipse中构建时,需要使用以下命令:

go test

或者如果这是主程序:

go build

如果问题仍然存在,检查Eclipse的Go插件配置:

  • 确保项目配置正确指向Go工作区
  • 验证两个文件都在同一个包目录下
  • 清理并重新构建项目

在Eclipse中,可以右键点击项目 → Run As → Go Test 来执行测试。

回到顶部