当前位置: 首页 > news >正文

长春网页制作建站沈阳网站建设 网络服务

长春网页制作建站,沈阳网站建设 网络服务,学生网页设计实训个人总结,第一app模板免费下载java 单元测试技巧在我以前的文章中#xff0c;我展示了有关JavaBeans单元测试的一些技巧。 在此博客文章中#xff0c;我将针对单元测试一些相当常见的Java代码#xff08;即实用程序类和Log4J日志记录语句#xff09;提供另外两个提示。 测试实用程序类 如果您的实用程序… java 单元测试技巧 在我以前的文章中我展示了有关JavaBeans单元测试的一些技巧。 在此博客文章中我将针对单元测试一些相当常见的Java代码即实用程序类和Log4J日志记录语句提供另外两个提示。 测试实用程序类 如果您的实用程序类遵循与我倾向于编写的相同的基本设计则它们由带有私有构造函数和所有静态方法的最终类组成。 实用类测试仪 package it.jdev.example;import static org.junit.Assert.*;import java.lang.reflect.*;import org.junit.Test;/*** Tests that a utility class is final, contains one private constructor, and* all methods are static.*/ public final class UtilityClassTester {private UtilityClassTester() {super();}/*** Verifies that a utility class is well defined.* * param clazz* throws Exception*/Testpublic static void test(final Class? clazz) throws Exception {// Utility classes must be final.assertTrue(Class must be final., Modifier.isFinal(clazz.getModifiers()));// Only one constructor is allowed and it has to be private.assertTrue(Only one constructor is allowed., clazz.getDeclaredConstructors().length 1);final Constructor? constructor clazz.getDeclaredConstructor();assertFalse(Constructor must be private., constructor.isAccessible());assertTrue(Constructor must be private., Modifier.isPrivate(constructor.getModifiers()));// All methods must be static.for (final Method method : clazz.getMethods()) {if (!Modifier.isStatic(method.getModifiers()) method.getDeclaringClass().equals(clazz)) {fail(Non-static method found: method .);}}}} 该UtilityClassTester本身也遵循上述的实用程序类约束因此有什么更好的方法通过使用它来测试自身来证明其用途 UtilityClassTester的测试用例 package it.jdev.example;import org.junit.Test;public class UtilityClassTesterTest {Testpublic void test() throws Exception {UtilityClassTester.test(UtilityClassTester.class);}}测试Log4J记录事件 当调用声明异常的方法时您将重新声明该相同的异常或者尝试在try-catch块中对其进行处理。 在后一种情况下您至少要做的是记录捕获的异常。 下面是一个非常简单的示例 MyService示例 package it.jdev.example;import java.lang.invoke.MethodHandles;import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;Service public class MyService {private static final Logger LOGGER Logger.getLogger(MethodHandles.Lookup.class);Autowiredprivate MyRepository myRepository;public void doSomethingUseful() {try {myRepository.doSomethingVeryUseful();} catch (SomeException e) {LOGGER.error(Some very informative error logging., e);}}} 当然您将需要测试是否正确记录了异常。 遵循以下内容 MyService日志记录事件的测试用例 package it.jdev.example;import static org.junit.Assert.*;import org.apache.log4j.spi.LoggingEvent; import org.junit.*; import org.mockito.*;public class MyServiceTest {Mockprivate MyRepository myRepository;InjectMocksprivate MyService myService new MyService();Beforepublic void setup() {MockitoAnnotations.initMocks(this);}Testpublic void thatSomeExceptionIsLogged() throws Exception {TestAppender testAppender new TestAppender();Mockito.doThrow(SomeException.class).when(myRepository).doSomethingVeryUseful();myService.doSomethingUseful();assertTrue(testAppender.getEvents().size() 1);final LoggingEvent loggingEvent testAppender.getEvents().get(0);assertEquals(Some very informative error logging., loggingEvent.getMessage().toString());}} 但是如何实现这一目标呢 事实证明将新的LogAppender添加到Log4J RootLogger非常容易。 用于Log4J的TestAppender package it.jdev.example;import java.util.*;import org.apache.log4j.*; import org.apache.log4j.spi.*;/*** Utility for testing Log4j logging events.* p* Usage:br /* code* TestAppender testAppender new TestAppender();br /* classUnderTest.methodThatWillLog();br /br /* LoggingEvent loggingEvent testAppender.getEvents().get(0);br /br /* assertEquals()...br /br /* /code*/ public class TestAppender extends AppenderSkeleton {private final ListLoggingEvent events new ArrayListLoggingEvent();public TestAppender() {this(Level.ERROR);}public TestAppender(final Level level) {super();Logger.getRootLogger().addAppender(this);this.addFilter(new LogLevelFilter(level));}Overrideprotected void append(final LoggingEvent event) {events.add(event);}Overridepublic void close() {}Overridepublic boolean requiresLayout() {return false;}public ListLoggingEvent getEvents() {return events;}/*** Filter that decides whether to accept or deny a logging event based on* the logging level.*/protected class LogLevelFilter extends Filter {private final Level level;public LogLevelFilter(final Level level) {super();this.level level;}Overridepublic int decide(final LoggingEvent event) {if (event.getLevel().isGreaterOrEqual(level)) {return ACCEPT;} else {return DENY;}}}}翻译自: https://www.javacodegeeks.com/2014/09/some-more-unit-test-tips.htmljava 单元测试技巧
http://www.zqtcl.cn/news/2100/

相关文章:

  • 网站上面的彩票快3怎么做培训机构管理系统
  • 深圳制作网站多少费用学包装设计网站
  • wordpress网站数据库备份咨询公司来公司做调查
  • 抚顺网站seo兴安盟住房和城乡建设部网站
  • 电子商务网站系统建设实训心得简单建站
  • 微信链接网站怎么做的网站设计与开发期末考试题
  • 婚纱摄影网站源码asp的网站建立
  • 重庆网站推广运营红圈工程项目管理软件
  • 北京通州区网站制作学做网站能赚多少钱
  • 网站开发 就业简历模板汕头各类免费建站
  • 旅游网站排行榜前20网站建设合同的法律
  • 网站管理系统怎么用莱芜信息港莱芜在线
  • 卓越网站建设的优点上海信息价查询造价信息网
  • 珠海医疗网站建设网站建设网站源码
  • 建设网站能自学吗.net搭建企业网站
  • 制作一个网站需要多长时间如何制作境外网站
  • 做网站多少人wordpress中文文章排版插件
  • 阜阳微商城网站建设辽宁奔之流建设工程有限公司网站
  • 衡水电商网站建设价格1024永久免费拒绝收费
  • 一个人做网站原型网络营销是什么工作内容
  • 电子商务网站建设课asp.net网站备份
  • 网站建设开发文档3d效果图教程网站
  • 门户网站的大数据应用深圳市福田区建设局网站
  • 儿童教育自适应网站模板购物网站技术方案
  • 幸福宝推广app网站入口主机托管名词解释
  • 地方门户网站的出路应用公园app开发步骤详解
  • 广告公司网站主页设计asp网站开发全程视频
  • 搭建科技网站价格网上国网推广多少钱一个户
  • 网页设计站点it软件开发
  • 模板网站建站哪家好网站建设广州网站建设