diff --git a/skywalking-sniffer/pom.xml b/skywalking-sniffer/pom.xml
index 2661cf4d9..a6aef14eb 100644
--- a/skywalking-sniffer/pom.xml
+++ b/skywalking-sniffer/pom.xml
@@ -17,6 +17,7 @@
skywalking-api
skywalking-sdk-plugin
skywalking-toolkit-activation
+ skywalking-sniffer-mock
diff --git a/skywalking-sniffer/skywalking-api/pom.xml b/skywalking-sniffer/skywalking-api/pom.xml
index e11ee28cc..5774f18bd 100644
--- a/skywalking-sniffer/skywalking-api/pom.xml
+++ b/skywalking-sniffer/skywalking-api/pom.xml
@@ -51,26 +51,6 @@
disruptor
3.3.6
-
-
-
- junit
- junit
- 4.11
- test
-
-
- org.powermock
- powermock-api-mockito
- 1.6.5
- test
-
-
- org.powermock
- powermock-module-junit4
- 1.6.5
- test
-
diff --git a/skywalking-sniffer/skywalking-sniffer-mock/pom.xml b/skywalking-sniffer/skywalking-sniffer-mock/pom.xml
new file mode 100644
index 000000000..b18693f11
--- /dev/null
+++ b/skywalking-sniffer/skywalking-sniffer-mock/pom.xml
@@ -0,0 +1,30 @@
+
+
+
+ skywalking-sniffer
+ com.a.eye
+ 3.0-2017
+
+ 4.0.0
+ skywalking-sniffer-mock
+ This is a sniffer mock module, test for test-dependency, only.
+
+
+
+ com.a.eye
+ skywalking-api
+ ${project.version}
+
+
+
+
+ junit
+ junit
+ 4.12
+
+
+
+
+
diff --git a/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/context/MockTracerContextListener.java b/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/context/MockTracerContextListener.java
new file mode 100644
index 000000000..ec7e1ccde
--- /dev/null
+++ b/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/context/MockTracerContextListener.java
@@ -0,0 +1,51 @@
+package com.a.eye.skywalking.sniffer.mock.context;
+
+import com.a.eye.skywalking.api.context.TracerContext;
+import com.a.eye.skywalking.api.context.TracerContextListener;
+import com.a.eye.skywalking.trace.TraceSegment;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import org.junit.Assert;
+
+/**
+ * This is mock tracer context listener, which should be added by calling {@link TracerContext.ListenerManager#add(TracerContextListener)}.
+ * This mock listener will hold all finished trace, which all are generated by {@link TracerContext#finish()}.
+ *
+ * Created by wusheng on 2017/2/20.
+ */
+public class MockTracerContextListener implements TracerContextListener {
+ private List finishedTraceSegments = Collections.synchronizedList(new ArrayList());
+
+ @Override public void afterFinished(TraceSegment traceSegment) {
+ finishedTraceSegments.add(traceSegment);
+ }
+
+ /**
+ * Assert all finished {@link #finishedTraceSegments} match the given size.
+ *
+ * @param size the give size.
+ */
+ public void assertSize(int size){
+ Assert.assertEquals(size, finishedTraceSegments.size());
+ }
+
+ /**
+ * Assert the {@link TraceSegment} at the given index of {@link #finishedTraceSegments},
+ * and run the given {@link SegmentAssert#call(TraceSegment)} to assert.
+ *
+ * @param index the given index.
+ * @param segmentAssert the given assert.
+ */
+ public void assertTraceSegment(int index, SegmentAssert segmentAssert){
+ assertSize(index + 1);
+ segmentAssert.call(finishedTraceSegments.get(index));
+ }
+
+ /**
+ * Clear all hold data.
+ */
+ public void clear(){
+ finishedTraceSegments.clear();
+ }
+}
diff --git a/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/context/SegmentAssert.java b/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/context/SegmentAssert.java
new file mode 100644
index 000000000..52a2b66d7
--- /dev/null
+++ b/skywalking-sniffer/skywalking-sniffer-mock/src/main/java/com/a/eye/skywalking/sniffer/mock/context/SegmentAssert.java
@@ -0,0 +1,13 @@
+package com.a.eye.skywalking.sniffer.mock.context;
+
+import com.a.eye.skywalking.trace.TraceSegment;
+
+/**
+ * The SegmentAssert interface should be implemented by any
+ * class whose instances are intended to assert a trace segment data.
+ *
+ * Created by wusheng on 2017/2/20.
+ */
+public interface SegmentAssert{
+ void call(TraceSegment finishedSegment);
+}