找回密码
 ╱人◕‿‿◕人╲订下契约(注册新用户)
查看: 9370|回复: 6

[Java] Junit4中的新断言assertThat的是用方法

  [复制链接]

签到天数: 1 天

连续签到: 1 天

[LV.1]初来乍到

20

主题

27

好友

1万

积分

第一章

积分
11792
发表于 2012-12-27 16:52:36 | 显示全部楼层 |阅读模式

╱人◕‿‿◕人╲定下契约

您需要 登录 才可以下载或查看,没有账号?╱人◕‿‿◕人╲订下契约(注册新用户)

×
本帖最后由 狂奔的瘦子 于 2012-12-27 16:58 编辑

如果需要是用assertThat需要在项目中引入junit4的jar包,以及hamcrest-core.jar和hamcrest-library.jar
下面是常用断言的代码

[mw_shl_code=java,true]import static org.hamcrest.Matchers.*;
import static org.junit.Assert.assertThat;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.junit.Before;
import org.junit.Test;

import com.lyh.share.model.User;

public class UserDaoTest {
         
         private User test1;
         private User test2;
         
         @Before
         public void init(){
                 test1 = new User();
                 test1.setUsername("tt1");
                 test1.setPassword("123");
                 test1.setShares(50);
                 test2 = new User();
                 test2.setUsername("tt2");
                 test2.setPassword("321");
                 test2.setShares(20);
         }
         
         @Test
         public void findUser(){
                 
                 /**数值匹配**/
                 //测试变量是否大于指定值
                 assertThat(test1.getShares(), greaterThan(50));
                 //测试变量是否小于指定值
                 assertThat(test1.getShares(), lessThan(100));
                 //测试变量是否大于等于指定值
                 assertThat(test1.getShares(), greaterThanOrEqualTo(50));
                 //测试变量是否小于等于指定值
                 assertThat(test1.getShares(), lessThanOrEqualTo(100));
                 
                 //测试所有条件必须成立
                 assertThat(test1.getShares(), allOf(greaterThan(50),lessThan(100)));
                 //测试只要有一个条件成立
                 assertThat(test1.getShares(), anyOf(greaterThanOrEqualTo(50), lessThanOrEqualTo(100)));
                 //测试无论什么条件成立(还没明白这个到底是什么意思)
                 assertThat(test1.getShares(), anything());
                 //测试变量值等于指定值
                 assertThat(test1.getShares(), is(100));
                 //测试变量不等于指定值
                 assertThat(test1.getShares(), not(50));
                 
                 /**字符串匹配**/
                 String url = "http://www.taobao.com";
                 //测试变量是否包含指定字符
                 assertThat(url, containsString("taobao"));
                 //测试变量是否已指定字符串开头
                 assertThat(url, startsWith("http://"));
                 //测试变量是否以指定字符串结尾
                 assertThat(url, endsWith(".com"));
                 //测试变量是否等于指定字符串
                 assertThat(url, equalTo("http://www.taobao.com"));
                 //测试变量再忽略大小写的情况下是否等于指定字符串
                 assertThat(url, equalToIgnoringCase("http://www.taobao.com"));
                 //测试变量再忽略头尾任意空格的情况下是否等于指定字符串
                 assertThat(url, equalToIgnoringWhiteSpace("http://www.taobao.com"));
                 
                 
                 /**集合匹配**/
                 
                 List<User> user = new ArrayList<User>();
                 user.add(test1);
                 user.add(test2);
                 
                 //测试集合中是否还有指定元素
                 assertThat(user, hasItem(test1));
                 assertThat(user, hasItem(test2));

                 /**Map匹配**/
                 Map<String,User> userMap = new HashMap<String,User>();
                 userMap.put(test1.getUsername(), test1);
                 userMap.put(test2.getUsername(), test2);
                 
                 //测试map中是否还有指定键值对
                 assertThat(userMap, hasEntry(test1.getUsername(), test1));
                 //测试map中是否还有指定键
                 assertThat(userMap, hasKey(test2.getUsername()));
                 //测试map中是否还有指定值
                 assertThat(userMap, hasValue(test2));
         }
         
}[/mw_shl_code]

hamcrest-1.3.zip(3.61MB)

评分

参与人数 2宅币 +33 贡献 +3 收起 理由
Mr_Alex + 15 + 1 o(* ̄▽ ̄*)ブ 发糖
_Nozomi + 18 + 2 继续手滑

查看全部评分

签名被小宅喵吞掉了~~~~(>_<)~~~~
回复

使用道具 举报

签到天数: 1 天

连续签到: 1 天

[LV.1]初来乍到

21

主题

63

好友

1万

积分

第一章

积分
18553
发表于 2012-12-27 17:01:46 | 显示全部楼层
= =新断言方式 有什么特点啊
哦哦 可以测试map啊
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

签到天数: 1 天

连续签到: 1 天

[LV.1]初来乍到

20

主题

27

好友

1万

积分

第一章

积分
11792
 楼主| 发表于 2012-12-27 17:03:22 | 显示全部楼层
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

签到天数: 1 天

连续签到: 1 天

[LV.1]初来乍到

3

主题

12

好友

7526

积分

LOLI控

积分
7526
发表于 2012-12-28 00:59:28 | 显示全部楼层
这样一来让人更头晕。我觉得模板弄到这样已经接近滥用的边缘了。
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

签到天数: 1 天

连续签到: 1 天

[LV.1]初来乍到

20

主题

27

好友

1万

积分

第一章

积分
11792
 楼主| 发表于 2012-12-28 08:37:17 | 显示全部楼层
jinlei6394 发表于 2012-12-28 00:59
这样一来让人更头晕。我觉得模板弄到这样已经接近滥用的边缘了。

这也不属于模板吧.只是断言的方式多了些而已,你可选自己用的习惯的断言来做,不一定拘泥于用新的东西
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

签到天数: 1 天

连续签到: 1 天

[LV.1]初来乍到

3

主题

12

好友

7526

积分

LOLI控

积分
7526
发表于 2012-12-28 13:52:01 | 显示全部楼层
狂奔的瘦子 发表于 2012-12-28 08:37
这也不属于模板吧.只是断言的方式多了些而已,你可选自己用的习惯的断言来做,不一定拘泥于用新的东西 ...

也未必不是。看这个样子估计是用模板实现的。
何况就算他不是map也是
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

签到天数: 1 天

连续签到: 1 天

[LV.1]初来乍到

20

主题

27

好友

1万

积分

第一章

积分
11792
 楼主| 发表于 2012-12-28 14:08:54 | 显示全部楼层
jinlei6394 发表于 2012-12-28 13:52
也未必不是。看这个样子估计是用模板实现的。
何况就算他不是map也是

恩...也算是吧.怎么说框架这东西就类似于一个模板....
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

本版积分规则

小黑屋|手机版|技术宅(Z站|基宅) ( 粤ICP备18082987号-1 )

GMT+8, 2024-11-16 22:57 , Processed in 0.064146 second(s), 19 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表