商城移动端网站开发,网站建设技术支持祥云平台,公司黄页网,建设自己的二手房中介网站阅读前提 了解JUnit 对JUnit的内部实现有兴趣 不妨看看[深入JUnit] Before, After, Test的秘密] 代码版本: junit 4.12代码搜索工具#xff1a; http://grepcode.com/常用符号 _: 用来略去代码段中无关紧要的parameter ...: 用来略去无关紧要的代码实现 本文的展开方式Before, After, Test的秘密] 代码版本: junit 4.12代码搜索工具 http://grepcode.com/常用符号 _: 用来略去代码段中无关紧要的parameter ...: 用来略去无关紧要的代码实现 本文的展开方式连续提出问题通过阅读JUnit源代码回答。 剧透 如果您看了[深入JUnit] Before, After, Test的秘密] 里面的BlockJUnit4ClassRunner是通过本文涉及到的一个叫AllDefaultPossibilitiesBuilder的类与JUnitCore连接到一起的。JUnitCore是今天的主角 QA Q1: 比如说我们有一个SampleTest类如何调用JUnit来运行测试A: JUnit有一个JUnitCode的类他的描述是 JUnitCore is a facade for running tests. 所以这个是运行测试的一个入口。Facade模式就是把错综复杂的子模块隐藏起来暴露几个简单的API给用户使用。 source code:http://grepcode.com/file/repo1.maven.org... Q2: 哪该使用JUnitCore的那个函数A: 瞄一眼JUnitCore有一个main函数。大喜 public static void main(String... args) {Result result new JUnitCore().runMain(new RealSystem(), args);System.exit(result.wasSuccessful() ? 0 : 1);
} Q3: JUnitCore#runMain内部有什么有意思的要看的东西A: JUnitCore#runMain最终落脚到org.junit.runner.Runner#run这个函数。runner是如何决定的请看org.junit.internal.builders.AllDefaultPossibilitiesBuilder内部。http://grepcode.com/file/repo1.maven.org... Q4: JUnitCore这个类有什么瑕疵么A: 这个类所有的methods都是public的有好几个method的生命让人感觉很费解。作为一个facade类应该提供尽可能少的封装良好的方法。但JUnit提供了8个run**的方法其中runMainrunClasses(Computer, classes)runRequest都应该是protected(package private),因为其中泄露了很多子系统的model概念例如Request, Computer之类。 Summary JUnitCore是一个facade类他提供了几个测试入口::main, runClass啥的。 AllDefaultPossibilitiesBuilder这个类存了几个默认的Test Runner。常用的BlockJUnit4ClassRunner就在其中 References JUnitCore http://grepcode.com/file/repo1.maven.org...http://grepcode.com/file/repo1.maven.org... AllDefaultPossibilitiesBuilderhttp://grepcode.com/file/repo1.maven.org... 下期内容 泛泛地了解了JUnit的code path暂时没兴趣继续深挖了。接下来打算转战倡导Mockito。Mockito::mock, Mockito::doReturn这些函数我觉得挺神奇的。 转载于:https://www.cnblogs.com/crazyacking/p/5940173.html