Skip to content

Instantly share code, notes, and snippets.

@afsinka
Last active September 8, 2018 14:58
Show Gist options
  • Save afsinka/750fd854257a983875f3e1feef142193 to your computer and use it in GitHub Desktop.
Save afsinka/750fd854257a983875f3e1feef142193 to your computer and use it in GitHub Desktop.
public class MyClass {
private MyDatabase myDatabase;
public String getCustomerName(long customerNo) {
System.out.println("getCustomerName() is called!");
return myDatabase.query(customerNo)+"_FROM_DATABASE";
}
public MyDatabase getMyDatabase() {
return myDatabase;
}
public void setMyDatabase(MyDatabase myDatabase) {
this.myDatabase = myDatabase;
}
}
import static org.mockito.Matchers.anyLong;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import org.junit.After;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnitRunner;
import com.MyClass;
import com.MyDatabase;
@RunWith(MockitoJUnitRunner.class)
public class MyClassTest {
@BeforeClass
public static void beforeClass() {
System.out.println("Tests are going to start now!");
}
@Before
public void before() {
System.out.println("******************************");
System.out.println("");
}
@After
public void after() {
System.out.println("");
}
@Test
public void testMockWithWhen() {
System.out.println("---testMockWithWhen started---");
MyClass mockedClass = mock(MyClass.class);
when(mockedClass.getCustomerName(anyLong())).thenReturn("John");
String actualCustomerName = mockedClass.getCustomerName(1000);
String expectedCustomerName = "John";
assertEquals(expectedCustomerName, actualCustomerName);
System.out.println("---testMockWithWhen finished---");
};
@Test
public void testMockWithDoReturn() {
System.out.println("---testMockWithDoReturn started---");
MyClass mockedClass = mock(MyClass.class);
doReturn("John").when(mockedClass).getCustomerName(anyLong());
String actualCustomerName = mockedClass.getCustomerName(1000);
String expectedCustomerName = "John";
assertEquals(expectedCustomerName, actualCustomerName);
System.out.println("---testMockWithDoReturn finished---");
};
@Test
public void testSpyWithWhen() {
System.out.println("---testSpyWithWhen started---");
MyClass mockedClass = spy(MyClass.class);
mockedClass.setMyDatabase(new MyDatabase());
when(mockedClass.getCustomerName(anyLong())).thenReturn("John");
String actualCustomerName = mockedClass.getCustomerName(1000);
String expectedCustomerName = "John";
assertEquals(expectedCustomerName, actualCustomerName);
System.out.println("---testSpyWithWhen finished---");
};
@Test
public void testSpyWithDoReturn() {
System.out.println("---testSpyWithDoReturn started---");
MyClass mockedClass = spy(MyClass.class);
// not necessary this time mockedClass.setMyDatabase(new MyDatabase());
doReturn("John").when(mockedClass).getCustomerName(anyLong());
String actualCustomerName = mockedClass.getCustomerName(1000);
String expectedCustomerName = "John";
assertEquals(expectedCustomerName, actualCustomerName);
System.out.println("---testSpyWithDoReturn finished---");
};
@Test
public void testMockDependencyWithWhen() {
System.out.println("---testMockDependencyWithWhen started---");
MyDatabase mockedDatabase = mock(MyDatabase.class);
when(mockedDatabase.query(anyLong())).thenReturn("John");
MyClass myClass = new MyClass();
myClass.setMyDatabase(mockedDatabase);
String actualCustomerName = myClass.getCustomerName(1000);
/** IMPORTANT **/
String expectedCustomerName = "John_FROM_DATABASE";
assertEquals(expectedCustomerName, actualCustomerName);
System.out.println("---testMockDependencyWithWhen finished---");
};
@Test
public void testMockDependencyWithDoReturn() {
System.out.println("---testMockDependencyWithDoReturn started---");
MyDatabase mockedDatabase = mock(MyDatabase.class);
doReturn("John").when(mockedDatabase).query(anyLong());
MyClass myClass = new MyClass();
myClass.setMyDatabase(mockedDatabase);
String actualCustomerName = myClass.getCustomerName(1000);
/** IMPORTANT **/
String expectedCustomerName = "John_FROM_DATABASE";
assertEquals(expectedCustomerName, actualCustomerName);
System.out.println("---testMockDependencyWithDoReturn finished---");
};
@Test
public void testSpyDependencyWithWhen() {
System.out.println("---testSpyDependencyWithWhen started---");
MyDatabase mockedDatabase = spy(new MyDatabase());
when(mockedDatabase.query(anyLong())).thenReturn("John");
MyClass myClass = new MyClass();
myClass.setMyDatabase(mockedDatabase);
String actualCustomerName = myClass.getCustomerName(1000);
/** IMPORTANT **/
String expectedCustomerName = "John_FROM_DATABASE";
assertEquals(expectedCustomerName, actualCustomerName);
System.out.println("---testSpyDependencyWithWhen finished---");
};
@Test
public void testSpyDependencyWithDoReturn() {
System.out.println("---testSpyDependencyWithDoReturn started---");
MyDatabase mockedDatabase = spy(new MyDatabase());
doReturn("John").when(mockedDatabase).query(anyLong());
MyClass myClass = new MyClass();
myClass.setMyDatabase(mockedDatabase);
String actualCustomerName = myClass.getCustomerName(1000);
/** IMPORTANT **/
String expectedCustomerName = "John_FROM_DATABASE";
assertEquals(expectedCustomerName, actualCustomerName);
System.out.println("---testSpyDependencyWithDoReturn finished---");
};
}
public class MyDatabase {
public String query(long customerNo) {
// TODO implement
System.out.println("query() is called!");
return null;
}
}
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>MockitoTutorial</groupId>
<artifactId>MockitoTutorial</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<powermock.version>1.7.1</powermock.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<testSourceDirectory>test</testSourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>
</project>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment