diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMassMessageService.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMassMessageService.java new file mode 100644 index 00000000..e4a57de9 --- /dev/null +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpMassMessageService.java @@ -0,0 +1,95 @@ +package me.chanjar.weixin.mp.api; + +import me.chanjar.weixin.common.exception.WxErrorException; +import me.chanjar.weixin.mp.bean.*; +import me.chanjar.weixin.mp.bean.result.WxMpMassSendResult; +import me.chanjar.weixin.mp.bean.result.WxMpMassUploadResult; + +/** + *
+ * 群发消息服务类 + * Created by Binary Wang on 2017-8-16. + *+ * + * @author Binary Wang + */ +public interface WxMpMassMessageService { + /** + * 上传群发用的图文消息 + */ + String MEDIA_UPLOAD_NEWS_URL = "https://api.weixin.qq.com/cgi-bin/media/uploadnews"; + /** + * 上传群发用的视频 + */ + String MEDIA_UPLOAD_VIDEO_URL = "https://api.weixin.qq.com/cgi-bin/media/uploadvideo"; + /** + * 分组群发消息 + */ + String MESSAGE_MASS_SENDALL_URL = "https://api.weixin.qq.com/cgi-bin/message/mass/sendall"; + /** + * 按openId列表群发消息 + */ + String MESSAGE_MASS_SEND_URL = "https://api.weixin.qq.com/cgi-bin/message/mass/send"; + /** + * 群发消息预览接口 + */ + String MESSAGE_MASS_PREVIEW_URL = "https://api.weixin.qq.com/cgi-bin/message/mass/preview"; + + /** + *
+ * 上传群发用的图文消息,上传后才能群发图文消息 + * + * 详情请见: http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN + *+ * + * @see #massGroupMessageSend(WxMpMassTagMessage) + * @see #massOpenIdsMessageSend(WxMpMassOpenIdsMessage) + */ + WxMpMassUploadResult massNewsUpload(WxMpMassNews news) throws WxErrorException; + + /** + *
+ * 上传群发用的视频,上传后才能群发视频消息 + * 详情请见: http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN + *+ * + * @see #massGroupMessageSend(WxMpMassTagMessage) + * @see #massOpenIdsMessageSend(WxMpMassOpenIdsMessage) + */ + WxMpMassUploadResult massVideoUpload(WxMpMassVideo video) throws WxErrorException; + + /** + *
+ * 分组群发消息
+ * 如果发送图文消息,必须先使用 {@link #massNewsUpload(WxMpMassNews)} 获得media_id,然后再发送
+ * 如果发送视频消息,必须先使用 {@link #massVideoUpload(WxMpMassVideo)} 获得media_id,然后再发送
+ * 详情请见: http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN
+ *
+ */
+ WxMpMassSendResult massGroupMessageSend(WxMpMassTagMessage message) throws WxErrorException;
+
+ /**
+ *
+ * 按openId列表群发消息
+ * 如果发送图文消息,必须先使用 {@link #massNewsUpload(WxMpMassNews)} 获得media_id,然后再发送
+ * 如果发送视频消息,必须先使用 {@link #massVideoUpload(WxMpMassVideo)} 获得media_id,然后再发送
+ * 详情请见: http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN
+ *
+ */
+ WxMpMassSendResult massOpenIdsMessageSend(WxMpMassOpenIdsMessage message) throws WxErrorException;
+
+ /**
+ * + * 群发消息预览接口 + * 开发者可通过该接口发送消息给指定用户,在手机端查看消息的样式和排版。为了满足第三方平台开发者的需求,在保留对openID预览能力的同时,增加了对指定微信号发送预览的能力,但该能力每日调用次数有限制(100次),请勿滥用。 + * 接口调用请求说明 + * http请求方式: POST + * https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token=ACCESS_TOKEN + * 详情请见:http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN + *+ * + * @return wxMpMassSendResult + */ + WxMpMassSendResult massMessagePreview(WxMpMassPreviewMessage wxMpMassPreviewMessage) throws Exception; + +} diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java index e4da721c..f684f4e8 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java @@ -20,26 +20,6 @@ public interface WxMpService { * 获得jsapi_ticket */ String GET_JSAPI_TICKET_URL = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi"; - /** - * 上传群发用的图文消息 - */ - String MEDIA_UPLOAD_NEWS_URL = "https://api.weixin.qq.com/cgi-bin/media/uploadnews"; - /** - * 上传群发用的视频 - */ - String MEDIA_UPLOAD_VIDEO_URL = "https://api.weixin.qq.com/cgi-bin/media/uploadvideo"; - /** - * 分组群发消息 - */ - String MESSAGE_MASS_SENDALL_URL = "https://api.weixin.qq.com/cgi-bin/message/mass/sendall"; - /** - * 按openId列表群发消息 - */ - String MESSAGE_MASS_SEND_URL = "https://api.weixin.qq.com/cgi-bin/message/mass/send"; - /** - * 群发消息预览接口 - */ - String MESSAGE_MASS_PREVIEW_URL = "https://api.weixin.qq.com/cgi-bin/message/mass/preview"; /** * 长链接转短链接接口 */ @@ -141,63 +121,6 @@ public interface WxMpService { */ WxJsapiSignature createJsapiSignature(String url) throws WxErrorException; - /** - *
- * 上传群发用的图文消息,上传后才能群发图文消息 - * - * 详情请见: http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN - *- * - * @see #massGroupMessageSend(me.chanjar.weixin.mp.bean.WxMpMassTagMessage) - * @see #massOpenIdsMessageSend(me.chanjar.weixin.mp.bean.WxMpMassOpenIdsMessage) - */ - WxMpMassUploadResult massNewsUpload(WxMpMassNews news) throws WxErrorException; - - /** - *
- * 上传群发用的视频,上传后才能群发视频消息 - * 详情请见: http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN - *- * - * @see #massGroupMessageSend(me.chanjar.weixin.mp.bean.WxMpMassTagMessage) - * @see #massOpenIdsMessageSend(me.chanjar.weixin.mp.bean.WxMpMassOpenIdsMessage) - */ - WxMpMassUploadResult massVideoUpload(WxMpMassVideo video) throws WxErrorException; - - /** - *
- * 分组群发消息
- * 如果发送图文消息,必须先使用 {@link #massNewsUpload(me.chanjar.weixin.mp.bean.WxMpMassNews)} 获得media_id,然后再发送
- * 如果发送视频消息,必须先使用 {@link #massVideoUpload(me.chanjar.weixin.mp.bean.WxMpMassVideo)} 获得media_id,然后再发送
- * 详情请见: http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN
- *
- */
- WxMpMassSendResult massGroupMessageSend(WxMpMassTagMessage message) throws WxErrorException;
-
- /**
- *
- * 按openId列表群发消息
- * 如果发送图文消息,必须先使用 {@link #massNewsUpload(me.chanjar.weixin.mp.bean.WxMpMassNews)} 获得media_id,然后再发送
- * 如果发送视频消息,必须先使用 {@link #massVideoUpload(me.chanjar.weixin.mp.bean.WxMpMassVideo)} 获得media_id,然后再发送
- * 详情请见: http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN
- *
- */
- WxMpMassSendResult massOpenIdsMessageSend(WxMpMassOpenIdsMessage message) throws WxErrorException;
-
- /**
- * - * 群发消息预览接口 - * 开发者可通过该接口发送消息给指定用户,在手机端查看消息的样式和排版。为了满足第三方平台开发者的需求,在保留对openID预览能力的同时,增加了对指定微信号发送预览的能力,但该能力每日调用次数有限制(100次),请勿滥用。 - * 接口调用请求说明 - * http请求方式: POST - * https://api.weixin.qq.com/cgi-bin/message/mass/preview?access_token=ACCESS_TOKEN - * 详情请见:http://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140549&token=&lang=zh_CN - *- * - * @return wxMpMassSendResult - */ - WxMpMassSendResult massMessagePreview(WxMpMassPreviewMessage wxMpMassPreviewMessage) throws Exception; - /** *
* 长链接转短链接接口
@@ -451,5 +374,9 @@ public interface WxMpService {
*/
RequestHttp getRequestHttp();
-
+ /**
+ * 返回群发消息相关接口方法的实现类对象,以方便调用其各个接口
+ * @return WxMpMassMessageService
+ */
+ WxMpMassMessageService getMassMessageService();
}
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMassMessageServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMassMessageServiceImpl.java
new file mode 100644
index 00000000..015c465c
--- /dev/null
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpMassMessageServiceImpl.java
@@ -0,0 +1,58 @@
+package me.chanjar.weixin.mp.api.impl;
+
+import me.chanjar.weixin.common.exception.WxErrorException;
+import me.chanjar.weixin.mp.api.WxMpMassMessageService;
+import me.chanjar.weixin.mp.api.WxMpService;
+import me.chanjar.weixin.mp.bean.*;
+import me.chanjar.weixin.mp.bean.result.WxMpMassSendResult;
+import me.chanjar.weixin.mp.bean.result.WxMpMassUploadResult;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ * 群发消息服务类
+ * Created by Binary Wang on 2017-8-16.
+ *
+ *
+ * @author Binary Wang
+ */
+public class WxMpMassMessageServiceImpl implements WxMpMassMessageService {
+ protected final Logger log = LoggerFactory.getLogger(this.getClass());
+ private WxMpService wxMpService;
+
+ public WxMpMassMessageServiceImpl(WxMpService wxMpService) {
+ this.wxMpService = wxMpService;
+ }
+
+ @Override
+ public WxMpMassUploadResult massNewsUpload(WxMpMassNews news) throws WxErrorException {
+ String responseContent = this.wxMpService.post(MEDIA_UPLOAD_NEWS_URL, news.toJson());
+ return WxMpMassUploadResult.fromJson(responseContent);
+ }
+
+ @Override
+ public WxMpMassUploadResult massVideoUpload(WxMpMassVideo video) throws WxErrorException {
+ String responseContent = this.wxMpService.post(MEDIA_UPLOAD_VIDEO_URL, video.toJson());
+ return WxMpMassUploadResult.fromJson(responseContent);
+ }
+
+ @Override
+ public WxMpMassSendResult massGroupMessageSend(WxMpMassTagMessage message) throws WxErrorException {
+ String responseContent = this.wxMpService.post(WxMpMassMessageService.MESSAGE_MASS_SENDALL_URL, message.toJson());
+ return WxMpMassSendResult.fromJson(responseContent);
+ }
+
+ @Override
+ public WxMpMassSendResult massOpenIdsMessageSend(WxMpMassOpenIdsMessage message) throws WxErrorException {
+ String responseContent = this.wxMpService.post(MESSAGE_MASS_SEND_URL, message.toJson());
+ return WxMpMassSendResult.fromJson(responseContent);
+ }
+
+ @Override
+ public WxMpMassSendResult massMessagePreview(WxMpMassPreviewMessage wxMpMassPreviewMessage) throws Exception {
+ String responseContent = this.wxMpService.post(MESSAGE_MASS_PREVIEW_URL, wxMpMassPreviewMessage.toJson());
+ return WxMpMassSendResult.fromJson(responseContent);
+ }
+
+}
diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceAbstractImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceAbstractImpl.java
index fbf3861e..91dff9ba 100644
--- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceAbstractImpl.java
+++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceAbstractImpl.java
@@ -43,6 +43,7 @@ public abstract class WxMpServiceAbstractImpl implements WxMpService, Requ
private WxMpDeviceService deviceService = new WxMpDeviceServiceImpl(this);
private WxMpShakeService shakeService = new WxMpShakeServiceImpl(this);
private WxMpMemberCardService memberCardService = new WxMpMemberCardServiceImpl(this);
+ private WxMpMassMessageService massMessageService = new WxMpMassMessageServiceImpl(this);
private int retrySleepMillis = 1000;
private int maxRetryTimes = 5;
@@ -108,36 +109,6 @@ public abstract class WxMpServiceAbstractImpl implements WxMpService, Requ
return getAccessToken(false);
}
- @Override
- public WxMpMassUploadResult massNewsUpload(WxMpMassNews news) throws WxErrorException {
- String responseContent = this.post(WxMpService.MEDIA_UPLOAD_NEWS_URL, news.toJson());
- return WxMpMassUploadResult.fromJson(responseContent);
- }
-
- @Override
- public WxMpMassUploadResult massVideoUpload(WxMpMassVideo video) throws WxErrorException {
- String responseContent = this.post(WxMpService.MEDIA_UPLOAD_VIDEO_URL, video.toJson());
- return WxMpMassUploadResult.fromJson(responseContent);
- }
-
- @Override
- public WxMpMassSendResult massGroupMessageSend(WxMpMassTagMessage message) throws WxErrorException {
- String responseContent = this.post(WxMpService.MESSAGE_MASS_SENDALL_URL, message.toJson());
- return WxMpMassSendResult.fromJson(responseContent);
- }
-
- @Override
- public WxMpMassSendResult massOpenIdsMessageSend(WxMpMassOpenIdsMessage message) throws WxErrorException {
- String responseContent = this.post(WxMpService.MESSAGE_MASS_SEND_URL, message.toJson());
- return WxMpMassSendResult.fromJson(responseContent);
- }
-
- @Override
- public WxMpMassSendResult massMessagePreview(WxMpMassPreviewMessage wxMpMassPreviewMessage) throws Exception {
- String responseContent = this.post(WxMpService.MESSAGE_MASS_PREVIEW_URL, wxMpMassPreviewMessage.toJson());
- return WxMpMassSendResult.fromJson(responseContent);
- }
-
@Override
public String shortUrl(String long_url) throws WxErrorException {
JsonObject o = new JsonObject();
@@ -415,4 +386,9 @@ public abstract class WxMpServiceAbstractImpl implements WxMpService, Requ
public RequestHttp getRequestHttp() {
return this;
}
+
+ @Override
+ public WxMpMassMessageService getMassMessageService() {
+ return this.massMessageService;
+ }
}
diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxMpMassMessageAPITest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpMassMessageServiceImplTest.java
similarity index 80%
rename from weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxMpMassMessageAPITest.java
rename to weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpMassMessageServiceImplTest.java
index dd7541ff..b896723a 100644
--- a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/WxMpMassMessageAPITest.java
+++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpMassMessageServiceImplTest.java
@@ -1,9 +1,10 @@
-package me.chanjar.weixin.mp.api;
+package me.chanjar.weixin.mp.api.impl;
import com.google.inject.Inject;
import me.chanjar.weixin.common.api.WxConsts;
import me.chanjar.weixin.common.bean.result.WxMediaUploadResult;
import me.chanjar.weixin.common.exception.WxErrorException;
+import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.test.ApiTestModule;
import me.chanjar.weixin.mp.api.test.TestConfigStorage;
import me.chanjar.weixin.mp.api.test.TestConstants;
@@ -13,21 +14,21 @@ import me.chanjar.weixin.mp.bean.WxMpMassTagMessage;
import me.chanjar.weixin.mp.bean.WxMpMassVideo;
import me.chanjar.weixin.mp.bean.result.WxMpMassSendResult;
import me.chanjar.weixin.mp.bean.result.WxMpMassUploadResult;
-import org.testng.*;
import org.testng.annotations.*;
import java.io.IOException;
import java.io.InputStream;
+import static org.testng.Assert.*;
+
/**
* 测试群发消息
*
* @author chanjarster
*/
-@Test(groups = "massAPI", dependsOnGroups = {"baseAPI", "mediaAPI", "groupAPI"})
+@Test
@Guice(modules = ApiTestModule.class)
-public class WxMpMassMessageAPITest {
-
+public class WxMpMassMessageServiceImplTest {
@Inject
protected WxMpService wxService;
@@ -41,10 +42,10 @@ public class WxMpMassMessageAPITest {
massMessage.setContent("测试群发消息\n欢迎欢迎,热烈欢迎\n换行测试\n超链接:Hello World");
massMessage.getToUsers().add(configProvider.getOpenid());
- WxMpMassSendResult massResult = this.wxService
+ WxMpMassSendResult massResult = this.wxService.getMassMessageService()
.massOpenIdsMessageSend(massMessage);
- Assert.assertNotNull(massResult);
- Assert.assertNotNull(massResult.getMsgId());
+ assertNotNull(massResult);
+ assertNotNull(massResult.getMsgId());
}
@Test(dataProvider = "massMessages")
@@ -57,10 +58,10 @@ public class WxMpMassMessageAPITest {
massMessage.setMediaId(mediaId);
massMessage.getToUsers().add(configProvider.getOpenid());
- WxMpMassSendResult massResult = this.wxService
+ WxMpMassSendResult massResult = this.wxService.getMassMessageService()
.massOpenIdsMessageSend(massMessage);
- Assert.assertNotNull(massResult);
- Assert.assertNotNull(massResult.getMsgId());
+ assertNotNull(massResult);
+ assertNotNull(massResult.getMsgId());
}
@Test
@@ -71,10 +72,10 @@ public class WxMpMassMessageAPITest {
massMessage
.setTagId(this.wxService.getUserTagService().tagGet().get(0).getId());
- WxMpMassSendResult massResult = this.wxService
+ WxMpMassSendResult massResult = this.wxService.getMassMessageService()
.massGroupMessageSend(massMessage);
- Assert.assertNotNull(massResult);
- Assert.assertNotNull(massResult.getMsgId());
+ assertNotNull(massResult);
+ assertNotNull(massResult.getMsgId());
}
@Test(dataProvider = "massMessages")
@@ -85,10 +86,10 @@ public class WxMpMassMessageAPITest {
massMessage.setMediaId(mediaId);
massMessage.setTagId(this.wxService.getUserTagService().tagGet().get(0).getId());
- WxMpMassSendResult massResult = this.wxService
+ WxMpMassSendResult massResult = this.wxService.getMassMessageService()
.massGroupMessageSend(massMessage);
- Assert.assertNotNull(massResult);
- Assert.assertNotNull(massResult.getMsgId());
+ assertNotNull(massResult);
+ assertNotNull(massResult.getMsgId());
}
@DataProvider
@@ -103,17 +104,17 @@ public class WxMpMassMessageAPITest {
// 上传视频到媒体库
WxMediaUploadResult uploadMediaRes = this.wxService.getMaterialService()
.mediaUpload(WxConsts.MEDIA_VIDEO, TestConstants.FILE_MP4, inputStream);
- Assert.assertNotNull(uploadMediaRes);
- Assert.assertNotNull(uploadMediaRes.getMediaId());
+ assertNotNull(uploadMediaRes);
+ assertNotNull(uploadMediaRes.getMediaId());
// 把视频变成可被群发的媒体
WxMpMassVideo video = new WxMpMassVideo();
video.setTitle("测试标题");
video.setDescription("测试描述");
video.setMediaId(uploadMediaRes.getMediaId());
- WxMpMassUploadResult uploadResult = this.wxService.massVideoUpload(video);
- Assert.assertNotNull(uploadResult);
- Assert.assertNotNull(uploadResult.getMediaId());
+ WxMpMassUploadResult uploadResult = this.wxService.getMassMessageService().massVideoUpload(video);
+ assertNotNull(uploadResult);
+ assertNotNull(uploadResult.getMediaId());
messages[0] = new Object[]{WxConsts.MASS_MSG_VIDEO, uploadResult.getMediaId()};
}
@@ -124,8 +125,8 @@ public class WxMpMassMessageAPITest {
.getSystemResourceAsStream("mm.jpeg")) {
WxMediaUploadResult uploadMediaRes = this.wxService.getMaterialService()
.mediaUpload(WxConsts.MEDIA_IMAGE, TestConstants.FILE_JPG, inputStream);
- Assert.assertNotNull(uploadMediaRes);
- Assert.assertNotNull(uploadMediaRes.getMediaId());
+ assertNotNull(uploadMediaRes);
+ assertNotNull(uploadMediaRes.getMediaId());
messages[1] = new Object[]{WxConsts.MASS_MSG_IMAGE, uploadMediaRes.getMediaId()};
}
@@ -136,8 +137,8 @@ public class WxMpMassMessageAPITest {
.getSystemResourceAsStream("mm.mp3")) {
WxMediaUploadResult uploadMediaRes = this.wxService.getMaterialService()
.mediaUpload(WxConsts.MEDIA_VOICE, TestConstants.FILE_MP3, inputStream);
- Assert.assertNotNull(uploadMediaRes);
- Assert.assertNotNull(uploadMediaRes.getMediaId());
+ assertNotNull(uploadMediaRes);
+ assertNotNull(uploadMediaRes.getMediaId());
messages[2] = new Object[]{WxConsts.MASS_MSG_VOICE, uploadMediaRes.getMediaId()};
}
@@ -149,8 +150,8 @@ public class WxMpMassMessageAPITest {
// 上传照片到媒体库
WxMediaUploadResult uploadMediaRes = this.wxService.getMaterialService()
.mediaUpload(WxConsts.MEDIA_IMAGE, TestConstants.FILE_JPG, inputStream);
- Assert.assertNotNull(uploadMediaRes);
- Assert.assertNotNull(uploadMediaRes.getMediaId());
+ assertNotNull(uploadMediaRes);
+ assertNotNull(uploadMediaRes.getMediaId());
// 上传图文消息
WxMpMassNews news = new WxMpMassNews();
@@ -170,10 +171,10 @@ public class WxMpMassMessageAPITest {
article2.setDigest("摘要2");
news.addArticle(article2);
- WxMpMassUploadResult massUploadResult = this.wxService
+ WxMpMassUploadResult massUploadResult = this.wxService.getMassMessageService()
.massNewsUpload(news);
- Assert.assertNotNull(massUploadResult);
- Assert.assertNotNull(uploadMediaRes.getMediaId());
+ assertNotNull(massUploadResult);
+ assertNotNull(uploadMediaRes.getMediaId());
messages[3] = new Object[]{WxConsts.MASS_MSG_NEWS, massUploadResult.getMediaId()};
}
diff --git a/weixin-java-mp/src/test/resources/testng.xml b/weixin-java-mp/src/test/resources/testng.xml
index d8646355..ea264e67 100644
--- a/weixin-java-mp/src/test/resources/testng.xml
+++ b/weixin-java-mp/src/test/resources/testng.xml
@@ -5,7 +5,7 @@
-
+