一般只需在测试类上添加注解@SpringBootTest即可,如果需要测试service和dao方法时@RunWith(SpringRunner.class)就可以正常使用其方法了
@SpringBootTest
@RunWith(SpringRunner.class)
public class PushTest {
@Value("${push_appkey}")
private String pushAppkey;
@Value("${push_secret}")
private String pushSecret;
@Autowired
private DeviceMessageService deviceMessageService;
@Autowired
private DwMemberMapper memberMapper;
@Autowired
private DwOrderExtendMapper dwOrderExtendMapper;
@Autowired
private DwOrderMapper orderMapper;
@Autowired
private DwOrderExtendMapper orderExtendMapper;
@Test
public void pushAlias(){
Map<String,String> param = new HashMap<>();
Map<String,String> bizParam = new HashMap<>();
List<String> alias = new ArrayList<>();
alias.add("6603c62ef10d4f5b907cba1c22296503");
alias.add("6efecf180c2b41499f4a2bd06232d6c7");
param.put("alert","别名推送");
bizParam.put("bizId","53");
bizParam.put("serviceType","successOrder");
JpushUtils.jpushIOSAndAndroidByAlias(param,pushAppkey,pushSecret,bizParam,alias);
}
//
@Test
public void pushDeviceId(){
Map<String,String> param = new HashMap<>();
Map<String,String> bizParam = new HashMap<>();
List<String> deviceIds = new ArrayList<>();
deviceIds.add("18071adc037ebb12fee");
param.put("alert","设备号推送");
bizParam.put("id","54");
bizParam.put("serviceType","successOrder");
JpushUtils.jpushIOSAndAndroidByDeviceNo(param,pushAppkey,pushSecret,bizParam,deviceIds);
}
@Test
public void pushTest(){
DwOrder dwOrder = orderMapper.selectByPrimaryKey(64);
Map<String,String> bizParam = new HashMap<>();
bizParam.put("bizId",dwOrder.getOrderNo());
bizParam.put("serviceType", BizType.successOrder.name());
List<String> aliasList = new ArrayList<>();
DwMember member = memberMapper.selectByPrimaryKey(dwOrder.getUserId());
DwOrderExtend orderExtend = orderExtendMapper.getByOrderId(dwOrder.getId());
aliasList.add(member.getAliasName());
Object[] str = new Object[4];
str[0] = dwOrder.getOrderNo();
str[1] = dwOrder.getProductName();
str[2] = orderExtend.getOrderQuantity();
String content = String.format(MessageUtils.getString("U_M_000003"), str);
deviceMessageService.pushNotification(content,bizParam,aliasList);
deviceMessageService.sendMessage(dwOrder.getUserId(),BizType.successOrder.name(),
dwOrder.getOrderNo(),"订单通知",content,Constant.USER_MESSAGE_TYPE_NOTIFICATION);
}
}
依赖jar
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
事物回滚
单测类继承AbstractTransactionalJUnit4SpringContextTests就可以不会影响数据库数据
需要注意的:
1.ideaj install项目需要将test跳过,除非集成测试
也可以在测试方法或测试类上添加@Ignore也可以跳过,不会运行该方法或测试类。
2.在添加测试类,需要注意的是,在test文件下创建包路径/java/com/***/web与main下的路径保持一致,否则在测试时回报异常。
包的属性设置
3.@Suite.SuiteClasses({xx.class,xxx.class})使用该注解可以在测试多个测试类,只需运行一次即可,不用所用类下的方法执行。