Reputation: 664
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?
Upvotes: 8
Views: 7773
Reputation: 1270
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.
Upvotes: 0
Reputation: 664
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.
Upvotes: 27