add powermock
parent
26176b16b8
commit
1266ef7db5
|
@ -85,5 +85,17 @@
|
||||||
<orderEntry type="library" name="Maven: org.apache.activemq:activemq-all:5.13.3" level="project" />
|
<orderEntry type="library" name="Maven: org.apache.activemq:activemq-all:5.13.3" level="project" />
|
||||||
<orderEntry type="library" name="Maven: org.apache.xbean:xbean-spring:4.5" level="project" />
|
<orderEntry type="library" name="Maven: org.apache.xbean:xbean-spring:4.5" level="project" />
|
||||||
<orderEntry type="library" name="Maven: commons-io:commons-io:2.5" level="project" />
|
<orderEntry type="library" name="Maven: commons-io:commons-io:2.5" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.powermock:powermock-module-junit4:1.7.1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.powermock:powermock-module-junit4-common:1.7.1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.powermock:powermock-reflect:1.7.1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.powermock:powermock-core:1.7.1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.javassist:javassist:3.21.0-GA" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.powermock:powermock-api-mockito2:1.7.1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.powermock:powermock-api-mockito-common:1.7.1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.powermock:powermock-api-support:1.7.1" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.mockito:mockito-core:2.8.9" level="project" />
|
||||||
|
<orderEntry type="library" scope="RUNTIME" name="Maven: net.bytebuddy:byte-buddy:1.6.14" level="project" />
|
||||||
|
<orderEntry type="library" scope="RUNTIME" name="Maven: net.bytebuddy:byte-buddy-agent:1.6.14" level="project" />
|
||||||
|
<orderEntry type="library" name="Maven: org.objenesis:objenesis:2.5" level="project" />
|
||||||
</component>
|
</component>
|
||||||
</module>
|
</module>
|
12
pom.xml
12
pom.xml
|
@ -18,6 +18,7 @@
|
||||||
<mybatis.generator.core.version>1.3.2</mybatis.generator.core.version>
|
<mybatis.generator.core.version>1.3.2</mybatis.generator.core.version>
|
||||||
<file_encoding>utf-8</file_encoding>
|
<file_encoding>utf-8</file_encoding>
|
||||||
<jdk.verion>1.8</jdk.verion>
|
<jdk.verion>1.8</jdk.verion>
|
||||||
|
<powermock.version>1.7.1</powermock.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
@ -231,6 +232,17 @@
|
||||||
<artifactId>commons-io</artifactId>
|
<artifactId>commons-io</artifactId>
|
||||||
<version>2.5</version>
|
<version>2.5</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.powermock</groupId>
|
||||||
|
<artifactId>powermock-module-junit4</artifactId>
|
||||||
|
<version>${powermock.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.powermock</groupId>
|
||||||
|
<artifactId>powermock-api-mockito2</artifactId>
|
||||||
|
<version>${powermock.version}</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<build>
|
<build>
|
||||||
<finalName>java-utils</finalName>
|
<finalName>java-utils</finalName>
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -46,5 +46,7 @@ public class LambdaTest {
|
||||||
System.out.println("------------求平方和-----new way-----");
|
System.out.println("------------求平方和-----new way-----");
|
||||||
System.out.println(list.stream().map(n -> n * n).reduce((x, y) -> x + y).get());
|
System.out.println(list.stream().map(n -> n * n).reduce((x, y) -> x + y).get());
|
||||||
|
|
||||||
|
System.out.println();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
package me.ehlxr.hashing;
|
||||||
|
|
||||||
|
public class Cluster {
|
||||||
|
private static final int SERVER_SIZE_MAX = 1024;
|
||||||
|
|
||||||
|
private Server[] servers = new Server[SERVER_SIZE_MAX];
|
||||||
|
private int size = 0;
|
||||||
|
|
||||||
|
public void put(Entry e) {
|
||||||
|
int index = e.hashCode() % size;
|
||||||
|
servers[index].put(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Entry get(Entry e) {
|
||||||
|
int index = e.hashCode() % size;
|
||||||
|
return servers[index].get(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean addServer(Server s) {
|
||||||
|
if (size >= SERVER_SIZE_MAX)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
servers[size++] = s;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
package me.ehlxr.hashing;
|
||||||
|
|
||||||
|
public class Entry {
|
||||||
|
private String key;
|
||||||
|
|
||||||
|
Entry(String key) {
|
||||||
|
this.key = key;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
package me.ehlxr.hashing;
|
||||||
|
|
||||||
|
public class Main {
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Cluster c = createCluster();
|
||||||
|
|
||||||
|
Entry[] entries = {
|
||||||
|
new Entry("i"),
|
||||||
|
new Entry("have"),
|
||||||
|
new Entry("a"),
|
||||||
|
new Entry("pen"),
|
||||||
|
new Entry("an"),
|
||||||
|
new Entry("apple"),
|
||||||
|
new Entry("applepen"),
|
||||||
|
new Entry("pineapple"),
|
||||||
|
new Entry("pineapplepen"),
|
||||||
|
new Entry("PPAP")
|
||||||
|
};
|
||||||
|
|
||||||
|
for (Entry e : entries) {
|
||||||
|
c.put(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
c.addServer(new Server("192.168.0.6"));
|
||||||
|
|
||||||
|
findEntries(c, entries);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Cluster createCluster() {
|
||||||
|
Cluster c = new Cluster();
|
||||||
|
c.addServer(new Server("192.168.0.0"));
|
||||||
|
c.addServer(new Server("192.168.0.1"));
|
||||||
|
c.addServer(new Server("192.168.0.2"));
|
||||||
|
c.addServer(new Server("192.168.0.3"));
|
||||||
|
c.addServer(new Server("192.168.0.4"));
|
||||||
|
c.addServer(new Server("192.168.0.5"));
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void findEntries(Cluster c, Entry[] entries) {
|
||||||
|
for (Entry e : entries) {
|
||||||
|
if (e == c.get(e)) {
|
||||||
|
System.out.println("重新找到了entry:" + e);
|
||||||
|
} else {
|
||||||
|
System.out.println("entry已失效:" + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
package me.ehlxr.hashing;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
public class Server {
|
||||||
|
private String name;
|
||||||
|
private Map<Entry, Entry> entries;
|
||||||
|
|
||||||
|
Server(String name) {
|
||||||
|
this.name = name;
|
||||||
|
entries = new HashMap<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void put(Entry e) {
|
||||||
|
entries.put(e, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Entry get(Entry e) {
|
||||||
|
return entries.get(e);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
package me.ehlxr.hashing.consistent;
|
||||||
|
|
||||||
|
import java.util.SortedMap;
|
||||||
|
import java.util.TreeMap;
|
||||||
|
|
||||||
|
public class Cluster {
|
||||||
|
private static final int SERVER_SIZE_MAX = 1024;
|
||||||
|
|
||||||
|
private SortedMap<Integer, Server> servers = new TreeMap<>();
|
||||||
|
private int size = 0;
|
||||||
|
|
||||||
|
public void put(Entry e) {
|
||||||
|
routeServer(e.hashCode()).put(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Entry get(Entry e) {
|
||||||
|
return routeServer(e.hashCode()).get(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Server routeServer(int hash) {
|
||||||
|
if (servers.isEmpty())
|
||||||
|
return null;
|
||||||
|
|
||||||
|
if (!servers.containsKey(hash)) {
|
||||||
|
SortedMap<Integer, Server> tailMap = servers.tailMap(hash);
|
||||||
|
hash = tailMap.isEmpty() ? servers.firstKey() : tailMap.firstKey();
|
||||||
|
// hash = servers.firstKey();
|
||||||
|
}
|
||||||
|
return servers.get(hash);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean addServer(Server s) {
|
||||||
|
if (size >= SERVER_SIZE_MAX)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
servers.put(s.hashCode(), s);
|
||||||
|
|
||||||
|
size++;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
package me.ehlxr.hashing.consistent;
|
||||||
|
|
||||||
|
public class Entry {
|
||||||
|
private String key;
|
||||||
|
|
||||||
|
Entry(String key) {
|
||||||
|
this.key = key;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int hashCode() {
|
||||||
|
return key.hashCode();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,49 @@
|
||||||
|
package me.ehlxr.hashing.consistent;
|
||||||
|
|
||||||
|
public class Main {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
Cluster c = createCluster();
|
||||||
|
|
||||||
|
Entry[] entries = {
|
||||||
|
new Entry("i"),
|
||||||
|
new Entry("have"),
|
||||||
|
new Entry("a"),
|
||||||
|
new Entry("pen"),
|
||||||
|
new Entry("an"),
|
||||||
|
new Entry("apple"),
|
||||||
|
new Entry("applepen"),
|
||||||
|
new Entry("pineapple"),
|
||||||
|
new Entry("pineapplepen"),
|
||||||
|
new Entry("PPAP")
|
||||||
|
};
|
||||||
|
|
||||||
|
for (Entry e : entries) {
|
||||||
|
c.put(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
c.addServer(new Server("achuguniadsfaang"));
|
||||||
|
findEntries(c, entries);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Cluster createCluster() {
|
||||||
|
Cluster c = new Cluster();
|
||||||
|
c.addServer(new Server("international"));
|
||||||
|
c.addServer(new Server("china"));
|
||||||
|
c.addServer(new Server("japanjapan"));
|
||||||
|
c.addServer(new Server("Amarica"));
|
||||||
|
c.addServer(new Server("samsungtsisger"));
|
||||||
|
c.addServer(new Server("achuguniang"));
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void findEntries(Cluster c, Entry[] entries) {
|
||||||
|
for (Entry e : entries) {
|
||||||
|
if (e == c.get(e)) {
|
||||||
|
System.out.println("重新找到了entry: " + e);
|
||||||
|
} else {
|
||||||
|
System.out.println("entry已失效: " + e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
package me.ehlxr.hashing.consistent;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
public class Server {
|
||||||
|
private String name;
|
||||||
|
private Map<Entry, Entry> entries;
|
||||||
|
|
||||||
|
Server(String name) {
|
||||||
|
this.name = name;
|
||||||
|
entries = new HashMap<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void put(Entry e) {
|
||||||
|
entries.put(e, e);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Entry get(Entry e) {
|
||||||
|
return entries.get(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int hashCode() {
|
||||||
|
return name.hashCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
package me.ehlxr.powermock;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by lixiangrong on 2017/11/3.
|
||||||
|
*/
|
||||||
|
public class ClassDependency {
|
||||||
|
public static boolean isExist() {
|
||||||
|
// do something
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final boolean isAlive() {
|
||||||
|
// do something
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
package me.ehlxr.powermock;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by lixiangrong on 2017/11/3.
|
||||||
|
*/
|
||||||
|
import java.io.File;
|
||||||
|
/**
|
||||||
|
* Created by lixiangrong on 2017/7/21.
|
||||||
|
*/
|
||||||
|
public class ClassUnderTest {
|
||||||
|
public boolean callArgumentInstance(File file) {
|
||||||
|
return file.exists();
|
||||||
|
}
|
||||||
|
public boolean callInternalInstance(String path) {
|
||||||
|
File file = new File(path);
|
||||||
|
return file.exists();
|
||||||
|
}
|
||||||
|
public boolean callFinalMethod(ClassDependency refer) {
|
||||||
|
return refer.isAlive();
|
||||||
|
}
|
||||||
|
public boolean callSystemFinalMethod(String str) {
|
||||||
|
return str.isEmpty();
|
||||||
|
}
|
||||||
|
public boolean callStaticMethod() {
|
||||||
|
return ClassDependency.isExist();
|
||||||
|
}
|
||||||
|
public String callSystemStaticMethod(String str) {
|
||||||
|
return System.getProperty(str);
|
||||||
|
}
|
||||||
|
public boolean callPrivateMethod() {
|
||||||
|
return isExist();
|
||||||
|
}
|
||||||
|
public boolean callVoidPrivateMethod(){
|
||||||
|
testVoid();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
private boolean isExist() {
|
||||||
|
// do something
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
private void testVoid(){
|
||||||
|
System.out.println("do nothing");
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,90 @@
|
||||||
|
package me.ehlxr.powermock;
|
||||||
|
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.powermock.api.mockito.PowerMockito;
|
||||||
|
import org.powermock.core.classloader.annotations.PrepareForTest;
|
||||||
|
import org.powermock.modules.junit4.PowerMockRunner;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by lixiangrong on 2017/7/21.
|
||||||
|
*/
|
||||||
|
@RunWith(PowerMockRunner.class)
|
||||||
|
public class TestClassUnderTest {
|
||||||
|
@Test
|
||||||
|
public void testCallArgumentInstance() {
|
||||||
|
File file = PowerMockito.mock(File.class);
|
||||||
|
ClassUnderTest underTest = new ClassUnderTest();
|
||||||
|
PowerMockito.when(file.exists()).thenReturn(true);
|
||||||
|
Assert.assertTrue(underTest.callArgumentInstance(file));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@PrepareForTest(ClassUnderTest.class)
|
||||||
|
public void testCallInternalInstance() throws Exception {
|
||||||
|
File file = PowerMockito.mock(File.class);
|
||||||
|
ClassUnderTest underTest = new ClassUnderTest();
|
||||||
|
PowerMockito.whenNew(File.class).withArguments("bbb").thenReturn(file);
|
||||||
|
PowerMockito.when(file.exists()).thenReturn(true);
|
||||||
|
Assert.assertTrue(underTest.callInternalInstance("bbb"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@PrepareForTest(ClassDependency.class)
|
||||||
|
public void testCallFinalMethod() {
|
||||||
|
ClassDependency depencency = PowerMockito.mock(ClassDependency.class);
|
||||||
|
ClassUnderTest underTest = new ClassUnderTest();
|
||||||
|
PowerMockito.when(depencency.isAlive()).thenReturn(true);
|
||||||
|
Assert.assertTrue(underTest.callFinalMethod(depencency));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@PrepareForTest(ClassUnderTest.class)
|
||||||
|
public void testCallSystemFinalMethod() {
|
||||||
|
String str = PowerMockito.mock(String.class);
|
||||||
|
ClassUnderTest underTest = new ClassUnderTest();
|
||||||
|
PowerMockito.when(str.isEmpty()).thenReturn(false);
|
||||||
|
Assert.assertFalse(underTest.callSystemFinalMethod(str));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@PrepareForTest(ClassDependency.class)
|
||||||
|
public void testCallStaticMethod() {
|
||||||
|
ClassUnderTest underTest = new ClassUnderTest();
|
||||||
|
PowerMockito.mockStatic(ClassDependency.class);
|
||||||
|
PowerMockito.when(ClassDependency.isExist()).thenReturn(true);
|
||||||
|
Assert.assertTrue(underTest.callStaticMethod());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@PrepareForTest(ClassUnderTest.class)
|
||||||
|
public void testCallSystemStaticMethod() {
|
||||||
|
ClassUnderTest underTest = new ClassUnderTest();
|
||||||
|
PowerMockito.mockStatic(System.class);
|
||||||
|
PowerMockito.when(System.getProperty("aaa")).thenReturn("bbb");
|
||||||
|
Assert.assertEquals("bbb", underTest.callSystemStaticMethod("aaa"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@PrepareForTest(ClassUnderTest.class)
|
||||||
|
public void testCallPrivateMethod() throws Exception {
|
||||||
|
ClassUnderTest underTest = PowerMockito.mock(ClassUnderTest.class);
|
||||||
|
PowerMockito.when(underTest.callPrivateMethod()).thenCallRealMethod();
|
||||||
|
PowerMockito.when(underTest, "isExist", anyString()).thenReturn(true);
|
||||||
|
Assert.assertTrue(underTest.callPrivateMethod());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@PrepareForTest(ClassUnderTest.class)
|
||||||
|
public void testCallVoidPrivateMethod() throws Exception {
|
||||||
|
ClassUnderTest underTest = PowerMockito.mock(ClassUnderTest.class);
|
||||||
|
PowerMockito.when(underTest.callVoidPrivateMethod()).thenCallRealMethod();
|
||||||
|
PowerMockito.doNothing().when(underTest, "testVoid");
|
||||||
|
Assert.assertTrue(underTest.callVoidPrivateMethod());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue