Skip to content

Commit a712edd

Browse files
committed
migrated tests from easymock to mockito
1 parent 0361404 commit a712edd

6 files changed

Lines changed: 47 additions & 82 deletions

File tree

pom.xml

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
</developers>
2929

3030
<properties>
31-
<powermock.version>1.4.6</powermock.version>
31+
<powermock.version>1.4.8</powermock.version>
3232
</properties>
3333

3434
<!-- get every artifact through maven.glassfish.org, which proxies all the artifacts that we need -->
@@ -124,24 +124,17 @@
124124
</dependency>
125125
<dependency>
126126
<groupId>org.powermock</groupId>
127-
<artifactId>powermock-api-easymock</artifactId>
127+
<artifactId>powermock-api-mockito</artifactId>
128128
<version>${powermock.version}</version>
129129
<scope>test</scope>
130130
</dependency>
131131
<!-- Fixing easymock to 3.0 because transitive dependency grabbed by powermock only allow to mock interfaces -->
132132
<dependency>
133-
<groupId>org.easymock</groupId>
134-
<artifactId>easymock</artifactId>
135-
<version>3.0</version>
133+
<groupId>org.mockito</groupId>
134+
<artifactId>mockito-core</artifactId>
135+
<version>1.8.5</version>
136136
<scope>test</scope>
137137
</dependency>
138-
<!-- Grabbing cglib-nodep, used by easymock to create plain class mocks -->
139-
<dependency>
140-
<groupId>cglib</groupId>
141-
<artifactId>cglib-nodep</artifactId>
142-
<version>2.2</version>
143-
<scope>test</scope>
144-
</dependency>
145138
<dependency>
146139
<groupId>junit</groupId>
147140
<artifactId>junit</artifactId>

src/test/java/hudson/plugins/scm_sync_configuration/data/CurrentVersionCompatibilityTest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
package hudson.plugins.scm_sync_configuration.data;
22

3-
import static org.easymock.EasyMock.isNull;
43
import static org.hamcrest.CoreMatchers.equalTo;
54
import static org.hamcrest.CoreMatchers.is;
6-
import static org.hamcrest.CoreMatchers.not;
5+
import static org.hamcrest.CoreMatchers.notNullValue;
76
import static org.junit.Assert.assertThat;
87
import hudson.plugins.scm_sync_configuration.ScmSyncConfigurationPlugin;
98
import hudson.plugins.scm_sync_configuration.scms.impl.ScmSyncSubversionSCM;
@@ -21,7 +20,7 @@ protected String getHudsonRootBaseTemplate() {
2120
@Test
2221
public void shouldCurrentVersionpluginConfigurationFileLoadCorrectly() throws Throwable {
2322
ScmSyncConfigurationPlugin plugin = ScmSyncConfigurationPlugin.getInstance();
24-
assertThat(plugin.getSCM(), not(isNull()));
23+
assertThat(plugin.getSCM(), is(notNullValue()));
2524
assertThat(plugin.getSCM().getId(), is(equalTo(ScmSyncSubversionSCM.class.getName())));
2625
}
2726
}

src/test/java/hudson/plugins/scm_sync_configuration/data/V0_0_2CompatibilityTest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
package hudson.plugins.scm_sync_configuration.data;
22

3-
import static org.easymock.EasyMock.isNull;
43
import static org.hamcrest.CoreMatchers.equalTo;
54
import static org.hamcrest.CoreMatchers.is;
6-
import static org.hamcrest.CoreMatchers.not;
5+
import static org.hamcrest.CoreMatchers.notNullValue;
76
import static org.junit.Assert.assertThat;
87
import hudson.plugins.scm_sync_configuration.ScmSyncConfigurationPlugin;
98
import hudson.plugins.scm_sync_configuration.scms.impl.ScmSyncSubversionSCM;
@@ -21,7 +20,7 @@ protected String getHudsonRootBaseTemplate() {
2120
// JENKINS-8453 related
2221
public void should0_0_2_pluginConfigurationFileShouldLoadCorrectly() throws Throwable {
2322
ScmSyncConfigurationPlugin plugin = ScmSyncConfigurationPlugin.getInstance();
24-
assertThat(plugin.getSCM(), not(isNull()));
23+
assertThat(plugin.getSCM(), is(notNullValue()));
2524
assertThat(plugin.getSCM().getId(), is(equalTo(ScmSyncSubversionSCM.class.getName())));
2625
}
2726
}

src/test/java/hudson/plugins/scm_sync_configuration/data/V0_0_3CompatibilityTest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
package hudson.plugins.scm_sync_configuration.data;
22

3-
import static org.easymock.EasyMock.isNull;
43
import static org.hamcrest.CoreMatchers.equalTo;
54
import static org.hamcrest.CoreMatchers.is;
6-
import static org.hamcrest.CoreMatchers.not;
5+
import static org.hamcrest.CoreMatchers.notNullValue;
76
import static org.junit.Assert.assertThat;
87
import hudson.plugins.scm_sync_configuration.ScmSyncConfigurationPlugin;
98
import hudson.plugins.scm_sync_configuration.scms.impl.ScmSyncSubversionSCM;
@@ -21,7 +20,7 @@ protected String getHudsonRootBaseTemplate() {
2120
// JENKINS-8453 related
2221
public void should0_0_3_pluginConfigurationFileShouldLoadCorrectly() throws Throwable {
2322
ScmSyncConfigurationPlugin plugin = ScmSyncConfigurationPlugin.getInstance();
24-
assertThat(plugin.getSCM(), not(isNull()));
23+
assertThat(plugin.getSCM(), is(notNullValue()));
2524
assertThat(plugin.getSCM().getId(), is(equalTo(ScmSyncSubversionSCM.class.getName())));
2625
}
2726
}

src/test/java/hudson/plugins/scm_sync_configuration/repository/HudsonExtensionsTest.java

Lines changed: 16 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
package hudson.plugins.scm_sync_configuration.repository;
22

3-
import static org.easymock.EasyMock.anyObject;
4-
import static org.easymock.EasyMock.createMock;
5-
import static org.easymock.EasyMock.expect;
6-
import static org.powermock.api.easymock.PowerMock.createPartialMock;
7-
import static org.powermock.api.easymock.PowerMock.mockStatic;
8-
import static org.powermock.api.easymock.PowerMock.replay;
3+
import static org.mockito.Mockito.spy;
4+
import static org.mockito.Mockito.when;
95
import hudson.model.Item;
106
import hudson.model.Saveable;
117
import hudson.model.Hudson;
@@ -23,6 +19,8 @@
2319
import org.codehaus.plexus.util.FileUtils;
2420
import org.junit.Before;
2521
import org.junit.Test;
22+
import org.mockito.Mockito;
23+
import org.powermock.api.mockito.PowerMockito;
2624
import org.powermock.core.classloader.annotations.PrepareForTest;
2725

2826
@PrepareForTest(ScmSyncConfigurationPlugin.class)
@@ -36,15 +34,10 @@ public void initObjectsUnderTests() throws Throwable{
3634
this.sscBusiness = new ScmSyncConfigurationBusiness();
3735
this.sscItemListener = new ScmSyncConfigurationItemListener();
3836

39-
// Mocking ScmSyncConfigurationPlugin singleton ...
40-
mockStatic(ScmSyncConfigurationPlugin.class);
41-
ScmSyncConfigurationPlugin mockedPlugin = createPartialMock(ScmSyncConfigurationPlugin.class, new String[]{ "getStrategyForSaveable" });
42-
mockedPlugin.setBusiness(this.sscBusiness);
43-
expect(ScmSyncConfigurationPlugin.getInstance()).andStubReturn(mockedPlugin);
44-
expect(mockedPlugin.getStrategyForSaveable(anyObject(Saveable.class), anyObject(File.class))).andStubReturn(ScmSyncConfigurationPlugin.AVAILABLE_STRATEGIES[0]);
45-
46-
replay(mockedPlugin);
47-
replay(ScmSyncConfigurationPlugin.class);
37+
// Mocking ScmSyncConfigurationPlugin.getStrategyForSaveable()
38+
ScmSyncConfigurationPlugin sscPlugin = spy(ScmSyncConfigurationPlugin.getInstance());
39+
sscPlugin.setBusiness(this.sscBusiness);
40+
PowerMockito.doReturn(ScmSyncConfigurationPlugin.AVAILABLE_STRATEGIES[0]).when(sscPlugin).getStrategyForSaveable(Mockito.any(Saveable.class), Mockito.any(File.class));
4841
}
4942

5043
@Test
@@ -58,10 +51,9 @@ public void shouldJobRenameBeCorrectlyImpactedOnSCM() throws Throwable {
5851
sscBusiness.synchronizeAllConfigs(scmContext, ScmSyncConfigurationPlugin.AVAILABLE_STRATEGIES, Hudson.getInstance().getMe());
5952

6053
// Renaming fakeJob to newFakeJob
61-
Item mockedItem = createMock(Item.class);
54+
Item mockedItem = Mockito.mock(Item.class);
6255
File mockedItemRootDir = new File(getCurrentHudsonRootDirectory() + "/jobs/newFakeJob/" );
63-
expect(mockedItem.getRootDir()).andStubReturn(mockedItemRootDir);
64-
replay(mockedItem);
56+
when(mockedItem.getRootDir()).thenReturn(mockedItemRootDir);
6557

6658
sscItemListener.onRenamed(mockedItem, "fakeJob", "newFakeJob");
6759

@@ -92,10 +84,9 @@ public void shouldJobRenameDoesntPerformAnyScmUpdate() throws Throwable {
9284

9385

9486
// Renaming fakeJob to newFakeJob
95-
Item mockedItem = createMock(Item.class);
87+
Item mockedItem = Mockito.mock(Item.class);
9688
File mockedItemRootDir = new File(getCurrentHudsonRootDirectory() + "/jobs/newFakeJob/" );
97-
expect(mockedItem.getRootDir()).andStubReturn(mockedItemRootDir);
98-
replay(mockedItem);
89+
when(mockedItem.getRootDir()).thenReturn(mockedItemRootDir);
9990

10091
sscItemListener.onRenamed(mockedItem, "fakeJob", "newFakeJob");
10192

@@ -115,10 +106,9 @@ public void shouldJobDeleteBeCorrectlyImpactedOnSCM() throws Throwable {
115106
sscBusiness.synchronizeAllConfigs(scmContext, ScmSyncConfigurationPlugin.AVAILABLE_STRATEGIES, Hudson.getInstance().getMe());
116107

117108
// Deleting fakeJob
118-
Item mockedItem = createMock(Item.class);
109+
Item mockedItem = Mockito.mock(Item.class);
119110
File mockedItemRootDir = new File(getCurrentHudsonRootDirectory() + "/jobs/fakeJob/" );
120-
expect(mockedItem.getRootDir()).andStubReturn(mockedItemRootDir);
121-
replay(mockedItem);
111+
when(mockedItem.getRootDir()).thenReturn(mockedItemRootDir);
122112

123113
sscItemListener.onDeleted(mockedItem);
124114

@@ -149,10 +139,9 @@ public void shouldJobDeleteDoesntPerformAnyScmUpdate() throws Throwable {
149139

150140

151141
// Deleting fakeJob
152-
Item mockedItem = createMock(Item.class);
142+
Item mockedItem = Mockito.mock(Item.class);
153143
File mockedItemRootDir = new File(getCurrentHudsonRootDirectory() + "/jobs/fakeJob/" );
154-
expect(mockedItem.getRootDir()).andStubReturn(mockedItemRootDir);
155-
replay(mockedItem);
144+
when(mockedItem.getRootDir()).thenReturn(mockedItemRootDir);
156145

157146
sscItemListener.onDeleted(mockedItem);
158147

src/test/java/hudson/plugins/scm_sync_configuration/util/ScmSyncConfigurationBaseTest.java

Lines changed: 20 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
package hudson.plugins.scm_sync_configuration.util;
22

3-
import static org.easymock.EasyMock.expect;
4-
import static org.easymock.EasyMock.notNull;
5-
import static org.powermock.api.easymock.PowerMock.createPartialMock;
6-
import static org.powermock.api.easymock.PowerMock.mockStatic;
7-
import static org.powermock.api.easymock.PowerMock.replay;
3+
import static org.mockito.Mockito.spy;
4+
import static org.mockito.Mockito.when;
85
import hudson.Plugin;
96
import hudson.PluginWrapper;
107
import hudson.model.Hudson;
@@ -21,20 +18,19 @@
2118
import java.io.File;
2219
import java.io.IOException;
2320
import java.lang.reflect.Field;
24-
import java.util.ArrayList;
25-
import java.util.List;
2621
import java.util.regex.Pattern;
2722

2823
import org.codehaus.plexus.PlexusContainerException;
2924
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
3025
import org.codehaus.plexus.util.FileUtils;
31-
import org.easymock.EasyMock;
3226
import org.junit.After;
3327
import org.junit.Before;
3428
import org.junit.Rule;
3529
import org.junit.rules.TestName;
3630
import org.junit.runner.RunWith;
37-
import org.powermock.api.easymock.PowerMock;
31+
import org.mockito.Mockito;
32+
import org.objenesis.ObjenesisStd;
33+
import org.powermock.api.mockito.PowerMockito;
3834
import org.powermock.core.classloader.annotations.PrepareForTest;
3935
import org.powermock.modules.junit4.PowerMockRunner;
4036
import org.springframework.core.io.ClassPathResource;
@@ -54,8 +50,8 @@ public void setup() throws Throwable {
5450
ScmSyncConfigurationPlugin scmSyncConfigPluginInstance = new ScmSyncConfigurationPlugin();
5551

5652
// Mocking PluginWrapper attached to current ScmSyncConfigurationPlugin instance
57-
PluginWrapper pluginWrapper = PowerMock.createMock(PluginWrapper.class);
58-
expect(pluginWrapper.getShortName()).andStubReturn("scm-sync-configuration");
53+
PluginWrapper pluginWrapper = PowerMockito.mock(PluginWrapper.class);
54+
when(pluginWrapper.getShortName()).thenReturn("scm-sync-configuration");
5955
// Setting field on current plugin instance
6056
Field wrapperField = Plugin.class.getDeclaredField("wrapper");
6157
boolean wrapperFieldAccessibility = wrapperField.isAccessible();
@@ -78,19 +74,20 @@ public void setup() throws Throwable {
7874
FileUtils.copyDirectoryStructure(new ClassPathResource("svnEmptyRepository").getFile(), curentLocalSvnRepository);
7975

8076
// Mocking user
81-
User mockedUser = EasyMock.createMock(User.class);
82-
expect(mockedUser.getId()).andStubReturn("fcamblor");
77+
User mockedUser = Mockito.mock(User.class);
78+
when(mockedUser.getId()).thenReturn("fcamblor");
8379

8480
// Mocking Hudson singleton instance ...
85-
mockStatic(Hudson.class);
86-
Hudson hudsonMockedInstance = createPartialMock(Hudson.class, new String[]{ "getRootDir", "getMe", "getPlugin" });
87-
expect(Hudson.getInstance()).andStubReturn(hudsonMockedInstance);
88-
expect(hudsonMockedInstance.getRootDir()).andStubReturn(currentHudsonRootDirectory);
89-
expect(hudsonMockedInstance.getMe()).andStubReturn(mockedUser);
90-
expect(hudsonMockedInstance.getPlugin(ScmSyncConfigurationPlugin.class)).andStubReturn(scmSyncConfigPluginInstance);
81+
// Warning : this line will only work on Objenesis supported VMs :
82+
// http://code.google.com/p/objenesis/wiki/ListOfCurrentlySupportedVMs
83+
Hudson hudsonMockedInstance = spy((Hudson) new ObjenesisStd().getInstantiatorOf(Hudson.class).newInstance());
84+
PowerMockito.doReturn(currentHudsonRootDirectory).when(hudsonMockedInstance).getRootDir();
85+
PowerMockito.doReturn(mockedUser).when(hudsonMockedInstance).getMe();
86+
PowerMockito.doReturn(scmSyncConfigPluginInstance).when(hudsonMockedInstance).getPlugin(ScmSyncConfigurationPlugin.class);
9187

92-
replay(hudsonMockedInstance, pluginWrapper, mockedUser);
93-
replay(Hudson.class);
88+
PowerMockito.mockStatic(Hudson.class);
89+
PowerMockito.doReturn(hudsonMockedInstance).when(Hudson.class); Hudson.getInstance();
90+
//when(Hudson.getInstance()).thenReturn(hudsonMockedInstance);
9491
}
9592

9693
@After
@@ -113,24 +110,13 @@ protected static File createTmpDirectory(String directoryPrefix) throws IOExcept
113110

114111
protected SCM createSCMMock(boolean withCredentials){
115112

116-
List<String> partiallyMockedMethods = new ArrayList<String>();
117-
if(withCredentials){
118-
partiallyMockedMethods.add("extractScmCredentials");
119-
}
120-
121-
SCM mockedSCM = createPartialMock(getSCMClass(), partiallyMockedMethods.toArray(new String[0]));
122-
mockStatic(SCM.class);
113+
SCM mockedSCM = spy(SCM.valueOf(getSCMClass().getName()));
123114

124-
expect(SCM.valueOf(notNull(String.class))).andReturn(mockedSCM);
125-
126115
if(withCredentials){
127116
SCMCredentialConfiguration mockedCredential = new SCMCredentialConfiguration("toto");
128-
expect(mockedSCM.extractScmCredentials(notNull(String.class))).andReturn(mockedCredential).anyTimes();
117+
PowerMockito.doReturn(mockedCredential).when(mockedSCM).extractScmCredentials((String)Mockito.notNull());
129118
}
130119

131-
replay(mockedSCM);
132-
replay(SCM.class);
133-
134120
return mockedSCM;
135121
}
136122

0 commit comments

Comments
 (0)