ksino's diary

覚えたことを忘れないように、小さなことでも書いていく。

Mockitoの使い方

やること

Mockitoの使い方を覚えたい。
ちょっとずつ書いていく。

テスト対象のコード

Car.java

package jp.gr.java_conf.ksino.mockito;

public class Car {

	private String team;
	
	private Engine engine;

	public Car() {
		super();
		engine = new Engine();
		engine.setManufacturer("ホンダ");
	}

	public String getTeam() {
		return team;
	}

	public void setTeam(String team) {
		this.team = team;
	}

	public Engine getEngine() {
		return engine;
	}

	public void setEngine(Engine engine) {
		this.engine = engine;
	}
}

Engine.java

package jp.gr.java_conf.ksino.mockito;

public class Engine {
	
	private String manufacturer;

	public String getManufacturer() {
		return manufacturer;
	}

	public void setManufacturer(String manufacturer) {
		this.manufacturer = manufacturer;
	}
}

テストコード

任意の値を返すようにする

package jp.gr.java_conf.ksino.mockito;

import org.junit.Assert;
import org.junit.Test;
import org.mockito.Mockito;

public class CarTest {

	@Test
	public void test_01() {
		final String honda = "ホンダ";
		final String mercedes = "メルセデス";

		Car car = new Car();
		// 単にgetEngineするとホンダが返ってくる
		Assert.assertEquals(honda, car.getEngine().getManufacturer());
		
		car = Mockito.mock(Car.class);
		Engine engine = new Engine();
		engine.setManufacturer(mercedes);
		// getEngineしたとき、メルセデスが返るようにする
		Mockito.when(car.getEngine()).thenReturn(engine);
		Assert.assertEquals(mercedes, car.getEngine().getManufacturer());
	}
}