기본적으로 제공되는 것은 아니지만 스스로 조정할 수 없습니다. init
이라는 함수는 다른 어떤 것보다 먼저 실행되도록 보장되어 있으며 테스트에서도 마찬가지입니다. 당신은, 물론,이를 만들기 위해 Fatal
주위에 래퍼 함수를 만들고,이 그러나 당신이 채널을 사용하여 (원하는 확장 할 수 있습니다
func TestXxx(t *testing.T) {
listener.Dispatch(pkg.MakeEvent("TestXxx", pkg.TestStarted))
err := DoSomething()
if err != nil {
listener.Dispatch(pkg.MakeEvent("TestXxx", pkg.TestFailed))
t.Fatal("Test failed")
}
listener.Dispatch(pkg.MakeEvent("TestXxx", pkg.TestPassed))
}
모든 테스트에서 그런
var listener pkg.EventListener
func init() {
pkg.SetupMyFramework()
listener = pkg.Listener()
}
: 테스트 파일에서
덜 자세한 내용 등),하지만 그것이 통합 할 수있는 방법의 요지입니다.
편집 : 나는 *testing.T
를 통해 정말 간단 래퍼를 작성하고 여기에 이벤트 파견 프레임 워크 : https://github.com/Jragonmiris/testevents
그것은 완전히 검증되지 않은의는 (ㅎ)하지만, 당신이 원하는 것을 상대적으로 가까워 야합니다. 디스패치 코드를 연결하기 위해 테스트 당 하나 또는 두 개의 추가 메서드 호출 만 필요합니다.
테스트 논리에 많은 사본 붙여 넣기를 만들지 않겠습니까? JUnit RunListener http://junit.sourceforge.net/javadoc/org/junit/runner/notification/RunListener.html과 같은 단일 진입 점을 찾고 있습니다. –
@ vania-pooh 당신은 간단한 해결책을 얻지 못할 것입니다. 왜냐하면 그런 일이 단순히'go test' 프레임 워크에 통합되지 않았기 때문입니다. 어떤 해결책이라도 너 자신에 약간의 갈고리가 필요합니다. – LinearZoetrope
문제는 없지만 테스트 보고서를 구현하는 가장 중요한 이유는이 보고서를 사용하려면 누구나 자신의 테스트에서 최소한의 변경 사항을 만들어야한다는 것입니다. –