diff --git a/src/server/index.ts b/src/server/index.ts
index 86dfd4b75..146a89a50 100644
--- a/src/server/index.ts
+++ b/src/server/index.ts
@@ -101,6 +101,19 @@ function createServer() {
 	}
 }
 
+// For testing
+export const startServer = () => {
+	const server = createServer();
+
+	// Init stream server
+	require('./api/streaming')(server);
+
+	// Listen
+	server.listen(config.port);
+
+	return server;
+};
+
 export default () => new Promise(resolve => {
 	const server = createServer();
 
diff --git a/test/api.ts b/test/api.ts
index fe41c751d..c5f7eeaf4 100644
--- a/test/api.ts
+++ b/test/api.ts
@@ -27,7 +27,6 @@ process.on('unhandledRejection', console.dir);
 //#endregion
 
 const app = require('../built/server/api').default;
-require('../built/server').default();
 const db = require('../built/db/mongodb').default;
 
 const server = http.createServer(app.callback());
@@ -44,6 +43,10 @@ describe('API', () => {
 	// Reset database each test
 	beforeEach(resetDb(db));
 
+	before(() => {
+		server.close();
+	});
+
 	describe('signup', () => {
 		it('不正なユーザー名でアカウントが作成できない', async(async () => {
 			const res = await request('/signup', {
diff --git a/test/streaming.ts b/test/streaming.ts
index a3022173b..63ee1e884 100644
--- a/test/streaming.ts
+++ b/test/streaming.ts
@@ -27,13 +27,13 @@ process.on('unhandledRejection', console.dir);
 //#endregion
 
 const app = require('../built/server/api').default;
-require('../built/server').default();
+const server = require('../built/server').startServer();
 const db = require('../built/db/mongodb').default;
 
-const server = http.createServer(app.callback());
+const apiServer = http.createServer(app.callback());
 
 //#region Utilities
-const request = _request(server);
+const request = _request(apiServer);
 const signup = _signup(request);
 //#endregion
 
@@ -41,6 +41,10 @@ describe('Streaming', () => {
 	// Reset database each test
 	beforeEach(resetDb(db));
 
+	before(() => {
+		server.close();
+	});
+
 	it('投稿がタイムラインに流れる', done => {
 		const post = {
 			text: 'foo'