Truth对测试命题有一套流畅的测试风格,并且具有良好的扩展性。Truth能够在IDE中完整运行命题(proposition)或者跟踪侦测等模式,在非真命题上有多种不同的反馈方式。Truth可以声明JUnit风格的常见操作,诸如:
Truth是一个开源项目,采用Apache 2.0开源许可。因此,可以在遵循本许可条款的前提下免费使用和修改。
这是我们平常使用JUnit的场景
Java1 2 3 4 | import static org . junit . Assert . assertTrue ; Set <Foo> foo = . . . ; assertTrue ( foo . isEmpty ( ) ) ; // or, shudder, foo.size() == 0 |
1 2 3 4 | java .lang .AssertionError at org .junit .Assert .fail ( Assert .java : 92 ) at org .junit .Assert .assertTrue ( Assert .java : 43 ) . . . |
1 2 3 4 | import static com . google . common . truth . Truth . assertThat ; Set <Foo> foo = . . . ; assertThat ( foo ) . isEmpty ( ) |
1 2 3 | org .truth0 .FailureStrategy $ThrowableAssertionError : Not true that is empty at org .truth0 .FailureStrategy .fail ( FailureStrategy .java : 33 ) . . . |
这里给大家提供两种使用Truth的方式。
首先,Truth的主要操作是围绕一个具有不同表现形式的动作(断言、假定、预计)来开展工作。由于assert是最常用的,又偏偏是Java的一个保留关键字,所以我们采用了类似Hamcrest和FEST的做法,创建了一个独立而简短的方法,以下是它的常见用法:
Java1 | assertThat ( someInt ) . isEqualTo ( 5 ) ; // Convenience method to access assert_().that() |
1 2 3 | assert_ ( ) . that ( someInt ) . isEqualTo ( 5 ) ; // Assert is a keyword in java, so no assert().that() assert_ ( ) . about ( . . . ) . that ( . . . ) . . . // Extensibility (see later in this page) assume ( ) . that ( someValue ) . isNotNull ( ) ; // JUnit-style Assume behavior. |
所有assert_()能够做到的操作,assume()也能做到。而且,所有能够拿到“测试动作”的方式也都能做到这些。
assertThat
是Truth类中的一个方法,所以一开始记得要 import uth.Truth.assertThat
1 2 3 4 | assertThat ( someInt ) . isEqualTo ( 5 ) ; assertThat ( aString ) . isEqualTo ( "Blah Foo" ) ; assertThat ( aString ) . contains ( "lah" ) ; assertThat ( foo ) . isNotNull ( ) ; |
1 2 3 4 5 6 7 | assertThat ( someCollection ) . contains ( "a" ) ; // contains this item assertThat ( someCollection ) . containsAllOf ( "a" , "b" ) . inOrder ( ) ; // contains items in the given order assertThat ( someCollection ) . containsExactly ( "a" , "b" , "c" , "d" ) ; // contains all and only these items assertThat ( someCollection ) . containsNoneOf ( "q" , "r" , "s" ) ; // contains none of these items assertThat ( aMap ) . containsKey ( "foo" ) ; // has a key assertThat ( aMap ) . containsEntry ( "foo" , "bar" ) ; // has a key, with given value assertThat ( aMap ) . doesNotContainEntry ( "foo" , "Bar" ) ; // does not have the given entry |
1 2 3 4 5 6 7 8 9 | // Reports: The subject is unexpectedly false assertThat ( myBooleanResult ) . isTrue ( ) ; // Reports: "hasError()" is unexpectedly false assertThat ( myBooleanResult ) . named ( "hasError()" ) . isTrue ( ) ; // Reports: My custom Message assert_ ( ) . withFailureMessage ( "My arbitrary custom message" ) . that ( myBooleanResult ) . named ( "hasError()" ) . isTrue ( ) ; |
Truth对新的数据类型有很好的扩展性,开发者可以创建自定义的“主题(Subject)”,像下面这样
Java1 2 3 | // customType() returns an adapter (SubjectFactory). assert_ ( ) . about ( customType ( ) ) . that ( theObject ) . hasSomeComplexProperty ( ) ; // specialized assertion assert_ ( ) . about ( customType ( ) ) . that ( theObject ) . isEqualTo ( anotherObject ) ; // overridden equality |
要使用Truth,在maven中这样配置
XHTML1 2 3 4 5 | <dependency> <groupId> uth </groupId> <artifactId> truth </artifactId> <version> 0.28 </version> </dependency> |
1 | http : //search.maven/remotecontent?filepath=org/truth0/truth/0.28/truth-0.28.jar |
需要了解更多信息,点击查看Truth到底如何工作的,还可以查看更多内置已有的命题详情。
官方网站:/
开源地址:
本文发布于:2024-01-28 17:18:22,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17064335069002.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |