草庐IT

final_test

全部标签

java - JUnit4 : Test a shutdown hook is called

我有一个添加关闭钩子(Hook)的方法。我需要测试(通过JUnit)钩子(Hook)中执行的代码是否被调用:publicvoidmyMethod(){Runtime.getRuntime().addShutdownHook(newThread(){@Overridepublicvoidrun(){...codetotest...}});}如何在单元测试中模拟关机? 最佳答案 我认为您无法测试它。相反,只需测试您的代码在调用时是否正确运行(通过单独对其进行单元测试)。然后,相信Java会在正确的时间调用您的代码。即将代码提取到扩展Th

java - Pentaho水壶: how to set up tests for transformations/jobs?

我使用PentahoKettle已经有一段时间了,之前我所做的转换和工作(使用勺子)非常简单,从数据库加载,重命名等,输入到另一个数据库。但现在我一直在做一些更复杂的计算的转换,我现在想以某种方式进行测试。所以我想做的是:设置一些测试数据运行转换验证结果数据一个选择可能是制作一个Kettle测试作业来测试转换。但由于我的转换与Java项目相关,我更愿意从jUnit运行测试。所以我考虑过做一个jUnit测试:设置测试数据(使用dbunit)运行转换(从命令行使用kitchen.sh)验证结果数据(使用dbunit)然而,这种方法需要测试数据库,这些数据库并不总是可用(oracle等昂贵/

java - 一个 `finalize` 调用如何破坏 GC/JVM?

调查时WhyThreadPoolExecutorbehavesdifferentlywhenrunningJavaprograminEclipseandfromcommandline?我写了一个测试,抛出了一个非常奇怪的OutOfMemoryError(maxmem=256Mb)classA{byte[]buf=newbyte[150_000_000];protectedvoidfinalize(){inti=1;}}Aa1=newA();a1=null;Aa2=newA();注释掉inti=1并且测试有效。据我了解,当finalize为空时,HotSpot会忽略它。但是一个几乎空的f

java - 持续集成 : keeping the test DB schema up-to-date

我正在设置持续集成服务器(Hudson)来构建Java项目并运行相关的单元/集成测试。大多数这些测试访问数据库,测试数据保存在DbUnitXML文件中。我正在寻找一种自动使测试数据库架构保持最新的方法。目前,特定版本的SQL脚本存储在以版本命名的目录中:└───scripts├───0.1.0├───0.1.1├───0.1.2├───0.1.4例如0.1.4版本的SQL脚本为scripts\0.1.4\script-0.1.4.sql问题是这些脚本混合了模式更改(例如ALTERTABLE...)和对静态表的更改(例如向USER_TYPE表添加新角色)。在单元测试的情况下,我只想应用模

java - 在 finally block 中将对象引用设置为 null

publicvoidtestFinally(){System.out.println(setOne().toString());}protectedStringBuildersetOne(){StringBuilderbuilder=newStringBuilder();try{builder.append("Cool");returnbuilder.append("Return");}finally{builder=null;/*;)*/}}为什么输出是CoolReturn,而不是null?问候,马亨德拉Athneria 最佳答案

java - 在System.java源码中,标准输入、输出和错误流都被声明为final并初始化为null?

publicfinalstaticInputStreamin=null;publicfinalstaticPrintStreamout=null;publicfinalstaticPrintStreamerr=null;但众所周知,这些流默认连接到控制台并且已经打开。System类中还有setIn()、setOut和setErr()方法来重定向流。当它们被声明为final并设置为初始化值null时,这怎么可能呢?我编译了以下代码,在调用println()时设置断点并使用netbeans进行调试。我的目标是通过进入源代码来准确确定变量System.in何时被初始化为标准输出。但是似乎在调

java - Java 内存泄漏 : finalization? 故障排除

我有一个行为不端的应用程序,似乎在泄漏。经过简短的探查器调查后,大部分内存(80%)由java.lang.ref.Finalizer实例占用。我怀疑终结器无法运行。一个常见的原因似乎是终结器抛出的异常。然而,Object类的finalize方法的javadoc(例如参见here)似乎自相矛盾:它指出Ifanuncaughtexceptionisthrownbythefinalizemethod,theexceptionisignoredandfinalizationofthatobjectterminates.但后来,它还指出Anyexceptionthrownbythefinaliz

java - 在 Java 中,是否有合理的理由从类构造函数调用非 final方法?

我最近花了相当多的时间调试生产代码中的一个问题,最终证明是由类在其构造函数中调用抽象方法引起的,并且该方法的子类实现试图使用子类字段尚未初始化(下面包含一个说明这一点的示例)在研究这个时,我偶然发现了thisquestion,并且对JonSkeet的回答很感兴趣:Ingeneralit'sabadideatocallanon-finalmethodwithinaconstructorforpreciselythisreason-thesubclassconstructorbodywon'thavebeenexecutedyet,soyou'reeffectivelycallingame

java - 无法使用修饰符 "public final"访问 java.util.HashMap$Entry

我的问题是,我的应用程序在本地Tomcat服务器上运行正常,但在安装了glassfish的服务器上会抛出错误。整个问题是我在JSTL中迭代查看HashMap。服务器抛出如下堆栈:Servlet.service()forservletjspthrewexceptionjava.lang.IllegalAccessException:Classjavax.el.BeanELResolvercannotaccessamemberofclassjava.util.HashMap$Entrywithmodifiers"publicfinal"atsun.reflect.Reflection.en

java - 分解出 finally {...} block

我想知道以下两个swnippest在语义上是否相同,如果不相同,有什么区别(我们假设我们要计算类型R的结果,并希望防止可能抛出的异常X这样做的过程):publicRtcf(....){try{Rsome=...;...computetheresult....returnsome;}catch(Xexception){...exceptionhandling....}finally{...cleanup....}}以及以下内容:publicRtc(....){try{Rsome=...;...computetheresult....returnsome;}catch(Xexception