我有一个Java方法,它使用ProcessBuilder启动一个Process,并将其输出传递给一个字节数组,然后在该过程结束时返回它的字节数组.
伪代码:
ProcessBuilder b = new ProcessBuilder("my.exe")
Process p = b.start();
... // get output from process, close process
Run Code Online (Sandbox Code Playgroud)
对这种方法进行单元测试的最佳方法是什么?我还没有找到一种方法来模拟ProcessBuilder(它是最终的),即使有令人难以置信的令人敬畏的JMockit,它也会给我一个NoClassDefFoundError:
java.lang.NoClassDefFoundError: test/MockProcessBuilder
at java.lang.ProcessBuilder.<init>(ProcessBuilder.java)
at mypackage.MyProcess.start(ReportReaderWrapperImpl.java:97)
at test.MyProcessTest.testStart(ReportReaderWrapperImplTest.java:28)
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
答案 - 正如奥拉夫所建议的那样,我最终将这些线重构为接口
Process start(String param) throws IOException;
Run Code Online (Sandbox Code Playgroud)
我现在将此接口的一个实例传递给我想要测试的类(在其构造函数中),通常使用带有原始行的默认实现.当我想测试时,我只需使用接口的模拟实现.像魅力一样,虽然我想知道我是否在这里过度接口......
在PHP开发环境中有很多选择,你必须自己将它们拼凑在一起.
我想知道是否有人想出了他们认为理想的设置,让你自己开发并让你发展.
现在我从命令行使用vim和svn.我编写脚本来管理构建,但我正在考虑研究Phing.
我喜欢vim,但我正在认真考虑使用PHP插件尝试Eclipse,因为我认为它使常见的SVN选项更容易(在项目中移动文件).
支持数据库持续集成的东西将是一个重要的优势!
更新:只是想强调前面的那一行.我意识到一些框架将有助于此,但我不使用框架.是否有一些简单的模块(包含在IDE中或不包含在内)可以让我轻松地将我的数据库模式/数据绑定到subversion版本,让我回滚和转发,标记,分支等?
对编辑以外的事情有何评论?例如:构建,管理登台/生产/开发环境,自动化测试和构建SVN提交等.理想情况下,我们可以将此帖子设置为"Go to Whoah",以建立专业的PHP团队开发环境.
任何支持.NET压缩框架的好的日志库?
我熟悉一些可用于Java的免费静态分析工具,例如FindBugs和PMD.我想知道的是Klocwork和Coverity等商业产品如何与这些产品相抗衡.他们的优点和缺点是什么?
我是通过使用Delphi在2000/NT/XP中创建OLE对象来实现的,如下所示:
Voice := CreateOLEObject('SAPI.SpVoice');
Voice.speak(...)
Run Code Online (Sandbox Code Playgroud)
但是这在Vista中不起作用,我怎么能让我的程序只是在Vista中说一些文字?
我试图用二进制模式的ofstream写一个wstring文件,但我觉得我做错了.这就是我尝试过的:
ofstream outFile("test.txt", std::ios::out | std::ios::binary);
wstring hello = L"hello";
outFile.write((char *) hello.c_str(), hello.length() * sizeof(wchar_t));
outFile.close();
Run Code Online (Sandbox Code Playgroud)
在例如Firefox中打开test.txt,编码设置为UTF16,它将显示为:
你好
谁能告诉我为什么会这样?
编辑:
在十六进制编辑器中打开文件我得到:
FF FE 68 00 00 00 65 00 00 00 6C 00 00 00 6C 00 00 00 6F 00 00 00
Run Code Online (Sandbox Code Playgroud)
看起来我出于某种原因在每个角色之间得到两个额外的字节?
我想开发一个能够访问其运行的移动设备的所有功能的移动应用程序(摄像头,文件,电话和网络连接).我打算构建一系列应用程序,每个应用程序都具有要执行的特定功能,而不是具有大型功能集的单个应用程序.我的编程背景是C,C#和Web应用程序.
用于执行此操作的最佳工具集是什么?我已经看过使用NetBeansIDE使用LWUIT创建Java ME应用程序 - 这看起来很有希望,但有什么警告呢?
我想以最大的移动设备为目标.
我使用Eclipse PDT,Subclipse,viPlugin和JSEclipse进行PHP和JavaScript开发.这给了我一个很好的环境,但我想知道还有什么可能会更好.
您在Eclipse中安装了哪些插件来创建使用PHP和JavaScript进行开发的出色设置?您觉得哪些功能最有用?哪个不太好,什么能解决它们?
是否有人使用比Eclipse + PDT或Netbeans更稳定和/或更全面的功能?Komodo IDE如何比较?
我的javascript体验中最困难的问题之一是iframe高度的正确(即"跨浏览器")计算.在我的应用程序中,我有很多动态生成的iframe,我希望它们都在load事件结束时进行一种自动调整以调整它们的高度和宽度.
在高度计算的情况下,我的最佳解决方案是以下(在jQuery的帮助下):
function getDocumentHeight(doc) {
var mdoc = doc || document;
if (mdoc.compatMode=='CSS1Compat') {
return mdoc.body.offsetHeight;
}
else {
if ($.browser.msie)
return mdoc.body.scrollHeight;
else
return Math.max($(mdoc).height(), $(mdoc.body).height());
}
}
Run Code Online (Sandbox Code Playgroud)
我没有成功搜索互联网.我还测试了雅虎库,它有一些文档和视口尺寸的方法,但它并不令人满意.我的解决方案工作正常,但有时它会计算出更高的高度.我已经在Firefox/IE/Safari中研究并测试了大量有关文档高度的属性:documentElement.clientHeight, documentElement.offsetHeight, documentElement.scrollHeight, body.offsetHeight, body.scrollHeight, ...
jQuery在各种浏览器中也没有连贯的行为$(document.body).height(), $('html', doc).height(), $(window).height()
我不仅在加载事件结束时调用上述函数,而且在动态插入DOM元素或隐藏或显示的元素的情况下也调用上述函数.这种情况有时会破坏仅在load事件中起作用的代码.
有人有真正的跨浏览器(至少是Firefox/IE/Safari)解决方案吗?一些提示或提示?