2014-12-28 3 views
0

Написав программу на основе http.ListenAndServe и написав тесты, я ударил пень. мой тест выглядит следующим образомkill running process in test golang

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

моя цель состоит в том, чтобы быть в состоянии выполнить тест и после того, как слушатель-сервер запускается убить его и вернуть сообщение об успешном

+0

Попробуйте изменить тестовый пакет для 'пакета Server' и удаление операторов импорта. Затем выполните 'go run -test'. Это проще всего, если файл, содержащий тестовые функции (который должен называться как-то вроде 'server_test.go'), имеет ту же декларацию пакета, что и тестируемый пакет. Посмотрите http://golang.org/doc/code.html#Testing. – Intermernet

ответ

0

Вы не можете. Для того, чтобы быть в состоянии остановить, вам нужно создать прослушиватель вручную

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

, то вы можете

err=listener.Close()