Last active
September 8, 2018 14:58
-
-
Save afsinka/750fd854257a983875f3e1feef142193 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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---"); | |
}; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class MyDatabase { | |
public String query(long customerNo) { | |
// TODO implement | |
System.out.println("query() is called!"); | |
return null; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<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