在测试golang中杀死运行进程

时间:2014-12-28 03:47:16

标签: http testing go server

编写一个基于http.ListenAndServe的程序并编写测试我已经遇到了问题。我的测试看起来像这样

package main

import (
    "testing"
    "../"
)

func TestServer(t *testing.T) {
    Server.Server()
}

和测试函数

package Server

import (
    "net/http"
)

var (
    DefaultPort = "8080"
    DefaultDir = "."
)

func Server() {
    port := DefaultPort
    directory := DefaultPort

    http.ListenAndServe(":"+port, http.FileServer(http.Dir(directory)))
}

我的目标是能够运行测试并在启动服务器侦听器之后将其杀死并返回成功消息

1 个答案:

答案 0 :(得分:0)

你不能。为了能够停止,您需要手动创建监听器

listener, err := net.Listen("http", ":"+port)
err=http.Serve(listener, http.FileServer(http.Dir(directory)))

然后你可以

err=listener.Close()