add powermock

dev
ehlxr 2017-11-03 14:04:13 +08:00
parent 26176b16b8
commit 1266ef7db5
16 changed files with 422 additions and 0 deletions

View File

@ -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.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: 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>
</module>

12
pom.xml
View File

@ -18,6 +18,7 @@
<mybatis.generator.core.version>1.3.2</mybatis.generator.core.version>
<file_encoding>utf-8</file_encoding>
<jdk.verion>1.8</jdk.verion>
<powermock.version>1.7.1</powermock.version>
</properties>
<dependencies>
@ -231,6 +232,17 @@
<artifactId>commons-io</artifactId>
<version>2.5</version>
</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>
<build>
<finalName>java-utils</finalName>

Binary file not shown.

Binary file not shown.

View File

@ -46,5 +46,7 @@ public class LambdaTest {
System.out.println("------------求平方和-----new way-----");
System.out.println(list.stream().map(n -> n * n).reduce((x, y) -> x + y).get());
System.out.println();
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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);
}
}
}
}

View File

@ -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);
}
}

View File

@ -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;
}
}

View File

@ -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();
}
}

View File

@ -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);
}
}
}
}

View File

@ -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();
}
}

View File

@ -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;
}
}

View File

@ -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");
}
}

View File

@ -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());
}
}