英文:
GoLand No Tests Were Run
问题
我有一个正在测试的方法,一切似乎都很好。然而,当我在 GoLand 中运行测试时,我可以在输出中看到测试“通过”,但测试运行器却说“没有运行任何测试”。
这是 calculator.go
中的示例方法:
package calculator
import (
"fmt"
)
type Calculator struct {}
func New() Calculator {
return Calculator{}
}
func (s *Calculator) AddTwoNumbers(num_one, num_two int) int {
fmt.Printf("adding")
return num_one + num_two
}
这是 calculator_test.go
中的测试:
package calculator
import (
"fmt"
"testing"
)
func Test_Calculator_AddTwoNumbers(t *testing.T) {
// Arrange
calculator := New()
// Act
total := calculator.AddTwoNumbers(1,2)
// Assert
if total != 3 {
msg := fmt.Sprintf("total should have been %d but instead was %d", 3, total)
t.Error(msg)
}
}
我做错了什么?
英文:
I have a method that I am testing, and everything seems fine. However, when I run the tests in GoLand, I can see in the output that the tests "PASS" but the test runner says "no tests were run".
Here's the sample method in calculator.go
package calculator
import (
"fmt"
)
type Calculator struct {}
func New() Calculator {
return Calculator{}
}
func (s *Calculator) AddTwoNumbers(num_one, num_two int) int {
fmt.Printf("adding")
return num_one + num_two
}
Here's the test in calculator_test.go
:
package calculator
import (
"fmt"
"testing"
)
func Test_Calculator_AddTwoNumbers(t *testing.T) {
// Arrange
calculator := New()
// Act
total := calculator.AddTwoNumbers(1,2)
// Assert
if total != 3 {
msg := fmt.Sprintf("total should have been %d but instead was %d", 3, total)
t.Error(msg)
}
}
What am I doing wrong?
答案1
得分: 17
在AddTwoNumbers
中,尝试使用fmt.Println(...
或fmt.Printf("foo\n")
,而不是fmt.Printf(...
。
你的AddTwoNumbers
方法输出中缺少换行符,导致测试执行输出的格式没有将每个测试放在新行中。测试运行程序无法解释已运行的测试。添加换行符可以保持输出的清晰。
英文:
Instead of fmt.Printf(...
in AddTwoNumbers
try either fmt.Println(...
or fmt.Printf("foo\n')
The absence of the newline in the output of your AddTwoNumbers
method is is causing the format of the test execution outputs to not have each test in a new line. The test runner is not being able to interpret that a test was run. Adding that newline, keeps a clean output.
答案2
得分: 0
我建议使用go test -v
命令来查看测试运行的详细输出。
go test -v
-v
选项用于输出详细信息:记录所有运行的测试,并打印所有Log
和Logf
调用的文本,即使测试成功也会打印。
英文:
I would suggest using to check the verbose output of the test run.
go test -v
> -v
Verbose output: log all tests as they are run. Also print all
text from Log and Logf calls even if the test succeeds.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论