Compare commits

...

2 Commits

Author SHA1 Message Date
金戟
02ba7ad83c follow up to 0.4.11 2021-02-06 21:11:48 +08:00
金戟
064926e952 use junit 4 in java demo 2021-01-12 19:46:23 +08:00
7 changed files with 47 additions and 47 deletions

View File

@@ -12,7 +12,7 @@ repositories {
} }
dependencies { dependencies {
testImplementation('org.junit.jupiter:junit-jupiter:5.6.2') testImplementation('junit:junit:4.13.1')
testImplementation('com.alibaba.testable:testable-all:0.4.11') testImplementation('com.alibaba.testable:testable-all:0.4.11')
testAnnotationProcessor('com.alibaba.testable:testable-processor:0.4.11') testAnnotationProcessor('com.alibaba.testable:testable-processor:0.4.11')
} }
@@ -23,5 +23,5 @@ tasks.withType(JavaCompile) {
test { test {
jvmArgs "-javaagent:${classpath.find { it.name.contains("testable-agent") }.absolutePath}" jvmArgs "-javaagent:${classpath.find { it.name.contains("testable-agent") }.absolutePath}"
useJUnitPlatform() useJUnit()
} }

View File

@@ -11,7 +11,7 @@
<properties> <properties>
<maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.target>1.8</maven.compiler.target>
<junit.version>5.6.2</junit.version> <junit.version>4.13.1</junit.version>
<testable.version>0.4.11</testable.version> <testable.version>0.4.11</testable.version>
</properties> </properties>
@@ -23,8 +23,8 @@
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.junit.jupiter</groupId> <groupId>junit</groupId>
<artifactId>junit-jupiter-api</artifactId> <artifactId>junit</artifactId>
<version>${junit.version}</version> <version>${junit.version}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>

View File

@@ -4,16 +4,16 @@ import com.alibaba.testable.core.annotation.MockMethod;
import com.alibaba.testable.demo.model.BlackBox; import com.alibaba.testable.demo.model.BlackBox;
import com.alibaba.testable.demo.model.Box; import com.alibaba.testable.demo.model.Box;
import com.alibaba.testable.demo.model.Color; import com.alibaba.testable.demo.model.Color;
import org.junit.jupiter.api.Test; import org.junit.Test;
import static com.alibaba.testable.core.matcher.InvokeVerifier.verify; import static com.alibaba.testable.core.matcher.InvokeVerifier.verify;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.Assert.assertEquals;
/** /**
* 演示父类变量引用子类对象时的Mock场景 * 演示父类变量引用子类对象时的Mock场景
* Demonstrate scenario of mocking method from sub-type object referred by parent-type variable * Demonstrate scenario of mocking method from sub-type object referred by parent-type variable
*/ */
class DemoInheritTest { public class DemoInheritTest {
private DemoInherit demoInherit = new DemoInherit(); private DemoInherit demoInherit = new DemoInherit();
@@ -49,42 +49,42 @@ class DemoInheritTest {
@Test @Test
void should_able_to_mock_call_sub_object_method_by_parent_object() { public void should_able_to_mock_call_sub_object_method_by_parent_object() {
BlackBox box = (BlackBox)demoInherit.putIntoBox(); BlackBox box = (BlackBox)demoInherit.putIntoBox();
verify("put_into_box").withTimes(1); verify("put_into_box").withTimes(1);
assertEquals("put_data_into_box", box.get()); assertEquals("put_data_into_box", box.get());
} }
@Test @Test
void should_able_to_mock_call_sub_object_method_by_sub_object() { public void should_able_to_mock_call_sub_object_method_by_sub_object() {
BlackBox box = demoInherit.putIntoBlackBox(); BlackBox box = demoInherit.putIntoBlackBox();
verify("put_into_blackbox").withTimes(1); verify("put_into_blackbox").withTimes(1);
assertEquals("put_data_into_blackbox", box.get()); assertEquals("put_data_into_blackbox", box.get());
} }
@Test @Test
void should_able_to_mock_call_parent_object_method_by_parent_object() { public void should_able_to_mock_call_parent_object_method_by_parent_object() {
String content = demoInherit.getFromBox(); String content = demoInherit.getFromBox();
verify("get_from_box").withTimes(1); verify("get_from_box").withTimes(1);
assertEquals("get_from_box", content); assertEquals("get_from_box", content);
} }
@Test @Test
void should_able_to_mock_call_parent_object_method_by_sub_object() { public void should_able_to_mock_call_parent_object_method_by_sub_object() {
String content = demoInherit.getFromBlackBox(); String content = demoInherit.getFromBlackBox();
verify("get_from_blackbox").withTimes(1); verify("get_from_blackbox").withTimes(1);
assertEquals("get_from_blackbox", content); assertEquals("get_from_blackbox", content);
} }
@Test @Test
void should_able_to_mock_call_interface_method_by_interface_object() { public void should_able_to_mock_call_interface_method_by_interface_object() {
String color = demoInherit.getColorViaColor(); String color = demoInherit.getColorViaColor();
verify("get_color_from_color").withTimes(1); verify("get_color_from_color").withTimes(1);
assertEquals("color_from_color", color); assertEquals("color_from_color", color);
} }
@Test @Test
void should_able_to_mock_call_interface_method_by_sub_class_object() { public void should_able_to_mock_call_interface_method_by_sub_class_object() {
String color = demoInherit.getColorViaBox(); String color = demoInherit.getColorViaBox();
verify("get_color_from_blackbox").withTimes(1); verify("get_color_from_blackbox").withTimes(1);
assertEquals("color_from_blackbox", color); assertEquals("color_from_blackbox", color);

View File

@@ -3,17 +3,17 @@ package com.alibaba.testable.demo;
import com.alibaba.testable.core.annotation.MockMethod; import com.alibaba.testable.core.annotation.MockMethod;
import com.alibaba.testable.core.error.VerifyFailedError; import com.alibaba.testable.core.error.VerifyFailedError;
import com.alibaba.testable.demo.model.BlackBox; import com.alibaba.testable.demo.model.BlackBox;
import org.junit.jupiter.api.Test; import org.junit.Test;
import static com.alibaba.testable.core.matcher.InvokeMatcher.*; import static com.alibaba.testable.core.matcher.InvokeMatcher.*;
import static com.alibaba.testable.core.matcher.InvokeVerifier.verify; import static com.alibaba.testable.core.matcher.InvokeVerifier.verify;
import static org.junit.jupiter.api.Assertions.fail; import static org.junit.Assert.fail;
/** /**
* 演示Mock方法调用校验器 * 演示Mock方法调用校验器
* Demonstrate mock method invocation verifier * Demonstrate mock method invocation verifier
*/ */
class DemoMatcherTest { public class DemoMatcherTest {
private DemoMatcher demoMatcher = new DemoMatcher(); private DemoMatcher demoMatcher = new DemoMatcher();
@@ -28,7 +28,7 @@ class DemoMatcherTest {
@Test @Test
void should_match_no_argument() { public void should_match_no_argument() {
demoMatcher.callMethodWithoutArgument(); demoMatcher.callMethodWithoutArgument();
verify("methodWithoutArgument").withTimes(1); verify("methodWithoutArgument").withTimes(1);
demoMatcher.callMethodWithoutArgument(); demoMatcher.callMethodWithoutArgument();
@@ -36,7 +36,7 @@ class DemoMatcherTest {
} }
@Test @Test
void should_match_number_arguments() { public void should_match_number_arguments() {
demoMatcher.callMethodWithNumberArguments(); demoMatcher.callMethodWithNumberArguments();
verify("methodWithArguments").without(anyString(), 2); verify("methodWithArguments").without(anyString(), 2);
verify("methodWithArguments").withInOrder(anyInt(), 2); verify("methodWithArguments").withInOrder(anyInt(), 2);
@@ -49,7 +49,7 @@ class DemoMatcherTest {
} }
@Test @Test
void should_match_string_arguments() { public void should_match_string_arguments() {
demoMatcher.callMethodWithStringArgument(); demoMatcher.callMethodWithStringArgument();
verify("methodWithArguments").with(startsWith("he"), endsWith("ld")); verify("methodWithArguments").with(startsWith("he"), endsWith("ld"));
verify("methodWithArguments").with(contains("stab"), matches("m.[cd]k")); verify("methodWithArguments").with(contains("stab"), matches("m.[cd]k"));
@@ -57,7 +57,7 @@ class DemoMatcherTest {
} }
@Test @Test
void should_match_object_arguments() { public void should_match_object_arguments() {
demoMatcher.callMethodWithObjectArgument(); demoMatcher.callMethodWithObjectArgument();
verify("methodWithArguments").withInOrder(any(BlackBox.class), any(BlackBox.class)); verify("methodWithArguments").withInOrder(any(BlackBox.class), any(BlackBox.class));
verify("methodWithArguments").withInOrder(nullable(BlackBox.class), nullable(BlackBox.class)); verify("methodWithArguments").withInOrder(nullable(BlackBox.class), nullable(BlackBox.class));
@@ -65,7 +65,7 @@ class DemoMatcherTest {
} }
@Test @Test
void should_match_with_times() { public void should_match_with_times() {
demoMatcher.callMethodWithNumberArguments(); demoMatcher.callMethodWithNumberArguments();
verify("methodWithArguments").with(anyNumber(), any()).times(3); verify("methodWithArguments").with(anyNumber(), any()).times(3);

View File

@@ -3,20 +3,20 @@ package com.alibaba.testable.demo;
import com.alibaba.testable.core.annotation.MockConstructor; import com.alibaba.testable.core.annotation.MockConstructor;
import com.alibaba.testable.core.annotation.MockMethod; import com.alibaba.testable.core.annotation.MockMethod;
import com.alibaba.testable.demo.model.BlackBox; import com.alibaba.testable.demo.model.BlackBox;
import org.junit.jupiter.api.Test; import org.junit.Test;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import static com.alibaba.testable.core.matcher.InvokeVerifier.verify; import static com.alibaba.testable.core.matcher.InvokeVerifier.verify;
import static com.alibaba.testable.core.tool.TestableTool.MOCK_CONTEXT; import static com.alibaba.testable.core.tool.TestableTool.MOCK_CONTEXT;
import static com.alibaba.testable.core.tool.TestableTool.SOURCE_METHOD; import static com.alibaba.testable.core.tool.TestableTool.SOURCE_METHOD;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.Assert.assertEquals;
/** /**
* 演示基本的Mock功能 * 演示基本的Mock功能
* Demonstrate basic mock functionality * Demonstrate basic mock functionality
*/ */
class DemoMockTest { public class DemoMockTest {
private DemoMock demoMock = new DemoMock(); private DemoMock demoMock = new DemoMock();
@@ -68,20 +68,20 @@ class DemoMockTest {
@Test @Test
void should_able_to_mock_new_object() { public void should_able_to_mock_new_object() {
assertEquals("mock_something", demoMock.newFunc()); assertEquals("mock_something", demoMock.newFunc());
verify("createBlackBox").with("something"); verify("createBlackBox").with("something");
} }
@Test @Test
void should_able_to_mock_member_method() throws Exception { public void should_able_to_mock_member_method() throws Exception {
assertEquals("{ \"res\": \"mock_hello_MOCK_TAIL\"}", demoMock.outerFunc("hello")); assertEquals("{ \"res\": \"mock_hello_MOCK_TAIL\"}", demoMock.outerFunc("hello"));
verify("innerFunc").with("hello"); verify("innerFunc").with("hello");
verify("staticFunc").with(); verify("staticFunc").with();
} }
@Test @Test
void should_able_to_mock_common_method() { public void should_able_to_mock_common_method() {
assertEquals("trim_string__sub_string__false", demoMock.commonFunc()); assertEquals("trim_string__sub_string__false", demoMock.commonFunc());
verify("trim").withTimes(1); verify("trim").withTimes(1);
verify("sub").withTimes(1); verify("sub").withTimes(1);
@@ -89,13 +89,13 @@ class DemoMockTest {
} }
@Test @Test
void should_able_to_mock_static_method() { public void should_able_to_mock_static_method() {
assertEquals("not_secret_box", demoMock.getBox().get()); assertEquals("not_secret_box", demoMock.getBox().get());
verify("secretBox").withTimes(1); verify("secretBox").withTimes(1);
} }
@Test @Test
void should_able_to_get_source_method_name() throws Exception { public void should_able_to_get_source_method_name() throws Exception {
// synchronous // synchronous
assertEquals("mock_one_mock_others", demoMock.callerOne() + "_" + demoMock.callerTwo()); assertEquals("mock_one_mock_others", demoMock.callerOne() + "_" + demoMock.callerTwo());
// asynchronous // asynchronous
@@ -105,7 +105,7 @@ class DemoMockTest {
} }
@Test @Test
void should_able_to_get_test_case_name() throws Exception { public void should_able_to_get_test_case_name() throws Exception {
MOCK_CONTEXT.put("case", "special_case"); MOCK_CONTEXT.put("case", "special_case");
// synchronous // synchronous
assertEquals("mock_special", demoMock.callerOne()); assertEquals("mock_special", demoMock.callerOne());

View File

@@ -2,25 +2,25 @@ package com.alibaba.testable.demo;
import com.alibaba.testable.core.accessor.PrivateAccessor; import com.alibaba.testable.core.accessor.PrivateAccessor;
import com.alibaba.testable.processor.annotation.EnablePrivateAccess; import com.alibaba.testable.processor.annotation.EnablePrivateAccess;
import org.junit.jupiter.api.Test; import org.junit.Test;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.Assert.assertNull;
/** /**
* 演示私有成员访问功能 * 演示私有成员访问功能
* Demonstrate private member access functionality * Demonstrate private member access functionality
*/ */
@EnablePrivateAccess @EnablePrivateAccess
class DemoPrivateAccessTest { public class DemoPrivateAccessTest {
private DemoPrivateAccess demoPrivateAccess = new DemoPrivateAccess(); private DemoPrivateAccess demoPrivateAccess = new DemoPrivateAccess();
@Test @Test
void should_able_to_access_private_method() { public void should_able_to_access_private_method() {
List<String> list = new ArrayList<String>() {{ add("a"); add("b"); add("c"); }}; List<String> list = new ArrayList<String>() {{ add("a"); add("b"); add("c"); }};
assertEquals("member", demoPrivateAccess.privateFunc()); assertEquals("member", demoPrivateAccess.privateFunc());
assertEquals("member", PrivateAccessor.invoke(demoPrivateAccess, "privateFunc")); assertEquals("member", PrivateAccessor.invoke(demoPrivateAccess, "privateFunc"));
@@ -29,7 +29,7 @@ class DemoPrivateAccessTest {
} }
@Test @Test
void should_able_to_access_private_field() { public void should_able_to_access_private_field() {
demoPrivateAccess.count = 2; demoPrivateAccess.count = 2;
assertEquals(Integer.valueOf(2), demoPrivateAccess.count); assertEquals(Integer.valueOf(2), demoPrivateAccess.count);
@@ -38,7 +38,7 @@ class DemoPrivateAccessTest {
} }
@Test @Test
void should_able_to_access_private_static_method() { public void should_able_to_access_private_static_method() {
assertEquals("static", DemoPrivateAccess.privateStaticFunc()); assertEquals("static", DemoPrivateAccess.privateStaticFunc());
assertEquals("static", PrivateAccessor.invokeStatic(DemoPrivateAccess.class, "privateStaticFunc")); assertEquals("static", PrivateAccessor.invokeStatic(DemoPrivateAccess.class, "privateStaticFunc"));
assertEquals("hello + 1", DemoPrivateAccess.privateStaticFuncWithArgs("hello", 1)); assertEquals("hello + 1", DemoPrivateAccess.privateStaticFuncWithArgs("hello", 1));
@@ -46,7 +46,7 @@ class DemoPrivateAccessTest {
} }
@Test @Test
void should_able_to_access_private_static_field() { public void should_able_to_access_private_static_field() {
DemoPrivateAccess.staticCount = 2; DemoPrivateAccess.staticCount = 2;
assertEquals(Integer.valueOf(2), DemoPrivateAccess.staticCount); assertEquals(Integer.valueOf(2), DemoPrivateAccess.staticCount);
@@ -55,7 +55,7 @@ class DemoPrivateAccessTest {
} }
@Test @Test
void should_able_to_update_final_field() { public void should_able_to_update_final_field() {
demoPrivateAccess.pi = 4.13; demoPrivateAccess.pi = 4.13;
assertEquals(Double.valueOf(4.13), demoPrivateAccess.pi); assertEquals(Double.valueOf(4.13), demoPrivateAccess.pi);
@@ -64,7 +64,7 @@ class DemoPrivateAccessTest {
} }
@Test @Test
void should_able_to_use_null_parameter() { public void should_able_to_use_null_parameter() {
demoPrivateAccess.pi = null; demoPrivateAccess.pi = null;
assertNull(demoPrivateAccess.pi); assertNull(demoPrivateAccess.pi);
assertEquals("null + 1", DemoPrivateAccess.privateStaticFuncWithArgs(null, 1)); assertEquals("null + 1", DemoPrivateAccess.privateStaticFuncWithArgs(null, 1));

View File

@@ -2,17 +2,17 @@ package com.alibaba.testable.demo;
import com.alibaba.testable.core.annotation.MockConstructor; import com.alibaba.testable.core.annotation.MockConstructor;
import com.alibaba.testable.core.annotation.MockMethod; import com.alibaba.testable.core.annotation.MockMethod;
import org.junit.jupiter.api.Test; import org.junit.Test;
import java.util.*; import java.util.*;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.Assert.assertEquals;
/** /**
* 演示模板方法的Mock场景 * 演示模板方法的Mock场景
* Demonstrate scenario of mocking template method * Demonstrate scenario of mocking template method
*/ */
class DemoTemplateTest { public class DemoTemplateTest {
private DemoTemplate demoTemplate = new DemoTemplate(); private DemoTemplate demoTemplate = new DemoTemplate();
@@ -70,19 +70,19 @@ class DemoTemplateTest {
@Test @Test
void should_able_to_mock_single_template_method() { public void should_able_to_mock_single_template_method() {
String res = demoTemplate.singleTemplateMethod(); String res = demoTemplate.singleTemplateMethod();
assertEquals("demo_mock_list", res); assertEquals("demo_mock_list", res);
} }
@Test @Test
void should_able_to_mock_double_template_method() { public void should_able_to_mock_double_template_method() {
String res = demoTemplate.doubleTemplateMethod(); String res = demoTemplate.doubleTemplateMethod();
assertEquals("testable_mock_map", res); assertEquals("testable_mock_map", res);
} }
@Test @Test
void should_able_to_mock_new_template_method() { public void should_able_to_mock_new_template_method() {
Set<?> res = demoTemplate.newTemplateMethod(); Set<?> res = demoTemplate.newTemplateMethod();
assertEquals(2, res.size()); assertEquals(2, res.size());
Iterator<?> iterator = res.stream().iterator(); Iterator<?> iterator = res.stream().iterator();