Dav*_*ker 8 java junit unit-testing jvm
我正在编写一些Java文件处理代码的测试,并希望确保所有文件都正确关闭.我不想运行'lsof',因为这将打开更多文件并使测试套件不可移植.有人知道这样做的方法吗?
如果您正在寻找 JDK 的一部分,答案是否定的。
您可能会发现一些使用JVMTI的东西,但它是不可移植的(它是本机接口)。或者使用JPDA 的东西,但这需要第二个 JVM。我给你这两个缩写词作为谷歌搜索的开始。
如果您想在 JVM 中运行并可移植,则必须为文件引用引入一个工厂:将所有new FileInputStream()、new FileOutputStream()、new RandomAccessFile()、new FileReader和new FileWriter调用替换为该工厂对象上的方法。该工厂将返回这些对象的子类,这些对象的close()方法被重写。它还将增加“打开文件”计数器,然后通过覆盖的close().
工厂方法和计数器需要是静态和同步的(除非您想注入工厂),并且应该使用系统属性来决定是返回子类流还是 JDK 版本。
就我个人而言,我会采纳评论中的建议,并首先使用 FindBugs。
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |