【问题标题】:kill running process in test golang在测试golang中杀死正在运行的进程
【发布时间】:2015-02-24 17:37:06
【问题描述】:

基于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)))
}

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

【问题讨论】:

  • 尝试将测试包更改为package Server 并删除导入语句。然后做go run -test。如果包含测试函数的文件(应该命名为server_test.go)与被测试的包具有相同的包声明,这是最简单的。看看golang.org/doc/code.html#Testing

标签: http testing go server


【解决方案1】:

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

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

那么你可以

err=listener.Close()

【讨论】:

    猜你喜欢
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 2018-02-28
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    相关资源
    最近更新 更多