JUnit実践入門を読んで:コード補足その2

渡辺修司さん著の「JUnit実践入門」を読んで、自分なりに考えたテストコードを書きます。

第二段
第20章 テストダブルの活用 20.3 外部システムに依存するテスト

本では、mockitoを利用していましたが、私は、ExternalResourceを使って、getInputメソッドで、ファイルのInputStreamを返す方法をとりました。

テストコード

package ch20.ex03;

import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;

import java.io.InputStream;

import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExternalResource;

public class NeworkResourcesTest {

	@Rule
	public NetworkLoaderResource resource = new NetworkLoaderResource();
	
	@Test
	public void NetworkResourcesのloadはHello_Worldを返す() throws Exception {
		NetworkResources sut = new NetworkResources();
		sut.loader = new NetworkLoader() {
			@Override
			public InputStream getInput() {
				return new NetworkLoaderResource().getInput();
			}
		};
		assertThat(sut.load(), is("Hello World"));
	}

	
	class NetworkLoaderResource extends ExternalResource {
		NetworkLoader loader;
		
		@Override
		protected void before() throws Throwable {
			loader = new NetworkLoader();
		}
		
		public InputStream getInput() {
			InputStream in = getClass().getResourceAsStream("input.txt");	
			return in;
		}
	}
}

]

ここで、input.txtファイルは、内容が

Hello World

で、Eclipseのプロジェクトでは src/test/resources/ch20/ex03に配置されます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です