AssertJ
2017-11-30 15:09
323 查看
import com.tangcheng.learning.test.assertj.AssertJEmployee; import com.tangcheng.learning.test.assertj.AssertJPerson; import com.tangcheng.learning.test.assertj.AssertJRing; import com.tangcheng.learning.test.assertj.Magical; import lombok.extern.slf4j.Slf4j; import org.joda.time.LocalDate; import org.joda.time.LocalDateTime; import org.junit.Test; import java.util.Collections; import java.util.Date; import java.util.HashMap; import static com.google.common.collect.Maps.newHashMap; import static org.assertj.core.api.Assertions.*; import static org.assertj.core.util.DateUtil.parse; import static org.assertj.core.util.DateUtil.parseDatetimeWithMs; import static org.assertj.core.util.Lists.newArrayList; /** * https://github.com/joel-costigliola/assertj-core * https://github.com/joel-costigliola/assertj-core.git * https://github.com/joel-costigliola/assertj-examples * https://github.com/joel-costigliola/assertj-examples.git * * @author tangcheng * 2017/11/30 */ @Slf4j public class AssertjTest { @Test public void testString() { String str = null; assertThat(str).isNullOrEmpty(); str = ""; assertThat(str).isEmpty(); str = "Frodo"; assertThat(str).isEqualTo("Frodo").isEqualToIgnoringCase("frodo"); assertThat(str).startsWith("Fro").endsWith("do").hasSize(5); assertThat(str).contains("ro").doesNotContain("or"); assertThat(str).containsOnlyOnce("odo"); assertThat(str).matches("..o.o").doesNotContain(".*d"); } @Test public void TestNumber() { Integer num = null; assertThat(num).isNull(); num = 42; assertThat(num).isEqualTo(42); assertThat(num).isGreaterThan(38).isGreaterThanOrEqualTo(39); assertThat(num).isLessThan(58).isLessThanOrEqualTo(50); assertThat(num).isNotZero(); assertThat(0).isZero(); assertThat(num).isPositive().isNotNegative(); assertThat(-1).isNegative().isNotPositive(); } @Test public void testDate() { assertThat(parse("2017-11-30")) .isEqualTo("2017-11-30") .isNotEqualTo("2017-11-29") .isAfter("2017-11-28") .isBefore(parse("2017-12-1")); assertThat(LocalDate.now().toDate()) .isBefore(LocalDate.now().plusYears(1).toDate()) .isAfter(LocalDate.now().minusYears(1).toDate()); assertThat(parse("2017-11-30")) .isBetween("2017-11-1", "2017-12-1") .isNotBetween(parse("2017-12-1"), parse("2018-12-1")); assertThat(LocalDateTime.now().toDate()) .isCloseTo(LocalDateTime.now().plusMillis(100).toDate(), 100) .isCloseTo(LocalDateTime.now().plusMillis(100).toDate(), 200) .isCloseTo(LocalDateTime.now().minusMillis(100).toDate(), 100) .isCloseTo(LocalDateTime.now().minusMillis(100).toDate(), 500); Date actual = parseDatetimeWithMs("2017-11-30T01:00:00.000"); Date date2 = parseDatetimeWithMs("2017-11-30T01:00:00.555"); assertThat(actual).isEqualToIgnoringMillis(date2); assertThat(actual).isInSameSecondAs(date2); Date date3 = parseDatetimeWithMs("2017-11-30T01:00:55.555"); assertThat(actual).isEqualToIgnoringSeconds(date3); assertThat(actual).isInSameMinuteAs(date3); Date date4 = parseDatetimeWithMs("2017-11-30T01:55:55.555"); assertThat(actual).isEqualToIgnoringMinutes(date4); assertThat(actual).isInSameHourAs(date4); Date date5 = parseDatetimeWithMs("2017-11-30T05:55:55.555"); assertThat(actual).isEqualToIgnoringHours(date5); assertThat(actual).isInSameDayAs(date5); } @Test public void testList() { assertThat(Collections.EMPTY_LIST).isEmpty(); assertThat(newArrayList()).isEmpty(); assertThat(newArrayList(1, 2, 3)).startsWith(1).endsWith(3); assertThat(newArrayList(1, 2, 3)).contains(1, atIndex(0)) .contains(2, atIndex(1)) .contains(3, atIndex(2)) .isSorted(); assertThat(newArrayList(3, 1, 2)).isSubsetOf(newArrayList(1, 2, 3, 4)); assertThat(newArrayList("a", "b", "c")).containsOnlyOnce("a"); } @Test public void testMap() { HashMap<String, Object> foo = newHashMap(); foo.put("A", 1); foo.put("B", 2); foo.put("C", 3); assertThat(foo).isNotEmpty().hasSize(3); assertThat(foo).contains(entry("A", 1), entry("B", 2)); assertThat(foo).containsKeys("A", "C"); assertThat(foo).containsValues(3, 1); } @Test public void testClass() { assertThat(Magical.class).isAnnotation(); assertThat(AssertJRing.class).isNotAnnotation(); assertThat(AssertJRing.class).hasAnnotation(Magical.class); assertThat(AssertJRing.class).isNotInterface(); assertThat("string").isInstanceOf(String.class); assertThat(AssertJPerson.class).isAssignableFrom(AssertJEmployee.class); } @Test public void testFail() { /** *除此之外,还提供包括Exception、Iterable、JodaTime、Guava等等很多的断言支持。 */ try { fail("在不检查任何条件的情况下使断言失败。显示一则消息"); } catch (AssertionError e) { log.warn("可以通过catch捕获该Error"); } try { failBecauseExceptionWasNotThrown(IllegalArgumentException.class); } catch (AssertionError e) { log.warn("可以通过catch捕获该Error"); } } }
import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** * @author tangcheng * 2017/11/30 */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface Magical { }
/** * @author tangcheng * 2017/11/30 */ @Magical public enum AssertJRing { oneRing, vilya, nenya, narya, dwarfRing, manRing; }
/** * @author tangcheng * 2017/11/30 */ public class AssertJPerson { }
/** * @author tangcheng * 2017/11/30 */ public class AssertJEmployee extends AssertJPerson { }
One minute starting guide http://joel-costigliola.github.io/assertj/assertj-core-quick-start.html AssertJ assertions for Joda-Time http://joel-costigliola.github.io/assertj/assertj-joda-time.html#quickstart AssertJ Guava assertions http://joel-costigliola.github.io/assertj/assertj-guava.html#quickstart
相关文章推荐
- [elk]logstash的grok匹配逻辑grok+date+mutate
- linux14.04 +webdriver+selenium+pycharm
- 链表的常用函数
- JAVA | 38 - 正则表达式 | Pattern 类 与 Matcher 类
- 一场没有硝烟的战争---端口争夺战
- 挨踢部落直播课堂第七期:如何使用React构建同构(isomorphic)应用
- 静态成员变量和静态成员函数
- Spring分页
- rpm spec文件编写
- IO流作业
- python3系列-爬虫解析
- plsql developer使用
- 博客选择CSDN还是简书
- 11月英语 ---everything in my plan
- java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader解决办法
- 3D引擎为什么使用三角形绘制曲面
- java中线程池的几种实现方式
- C#生成一个几乎不会重复的编号
- Lintcode166 Nth to Last Node in List solution 题解
- IO流笔记