我有三个看起来像这样的函数:
private Node GetNode(Node parentNode)
{
var node = new node();
switch (parentNode.NodeType)
{
case NodeType.Multiple: node = GetMultipleNode(parentNode)
case NodeType.Repeating: node = GetRepeatingNode(parentNode)
}
return node;
}
private Node GetMultipleNode(Node parentNode)
{
foreach (var child in parentNode.Children)
return GetNode(child);
}
private Node GetRepeatingNode(Node parentNode)
{
for (int i=0; i < parentNode.Count; i++)
return GetNode(new Node(i)); // Assume meaningful constructor for Node
}
Run Code Online (Sandbox Code Playgroud)
鉴于这三种方法是相互递归的,那么如何独立地对它们进行单元测试呢?
在最近的AdaCore Gem中有一个声明
Finalize的实现稍微复杂一些:Ada参考手册表明Finalize过程应该始终是幂等的.Ada编译器可以在同一对象上多次调用Finalize,特别是在发生异常时.
我需要测试一个私人控制类型,
type T is private;
private
type T is new Ada.Finalization.Controlled with ...
Run Code Online (Sandbox Code Playgroud)
我可以更改源以使类型明显受控制
type T is new Ada.Finalization.Controlled with private;
Run Code Online (Sandbox Code Playgroud)
然后只是打电话Finalize (My_T);(甚至My_T.Finalize?); 但有没有什么方法可以导致多次最终确定而不对测试中的软件进行此更改?
例如,我想从imread()捕获一个无法读取的文件路径异常.我可以做这个.
imagePath = 'a_picture.jpg';
try
im = imread(imagePath);
catch exception
if strcmp(exception.identifier, 'MATLAB:imread:fileOpen')
fprintf('Couldn''t open %s.\n', imagePath);
im = [];
else
fprintf('Unexpected error (%s): %s\n', ...
exception.identifier, exception.message);
throw(exception);
end
end
Run Code Online (Sandbox Code Playgroud)
但我知道发现与之比较的神奇字符串(在本例中为'MATLAB:imread:fileOpen')的唯一方法是:
导致错误,捕获异常,并查看标识符.但要做到这一点需要很长时间.例如,如果文件存在但实际上不是图像文件,Matlab是否使用不同的异常标识符?如果它存在但我没有读取权限怎么样?如果它是一个目录怎么办?
看一下源代码.imread()是用Matlab编写的,所以这是可能的,但它不适用于其他函数.当然,imread()调用其他不是用Matlab编写的函数,异常可能会从它们中冒出来.
有没有权威的方法让我知道imread()可以抛出的所有异常?我希望这是在文档的某个地方,但我找不到它.
我们最近搬到了64位操作系统(Windows 7)并安装了visual studio 2008.现在在调试异常时,我无法将下一个语句设置回try块中的代码.我用谷歌搜索了这篇文章并点击了这篇文章.
这解释了它,但这可追溯到2007年.现在有任何解决方案或解决方案吗?
我需要在OSX上获取当前连接的Wi-Fi SSID的名称.
我已经搞砸了SystemConfiguration框架,我觉得它就在那里(因为我能够获得网络位置的名称),但我并没有真正找到获取Wi-Fi SSID的方法.
非常感谢任何帮助.:)
谢谢.
我正在使用SimpleXml来(de)序列化POJO.现在,我有一个大的XML,它有一些不需要的元素.例如,使用此XML:
<Root>
<Element>Used</Element>
<Another>Not used</Another>
<Root>
Run Code Online (Sandbox Code Playgroud)
我想创建一个POJO,它看起来像:
@Root
class Root{
@Element
private String element;
}
Run Code Online (Sandbox Code Playgroud)
问题是我得到了这个例外:
simpleframework.xml.core.ElementException: Element 'Another' does not have a
match in class blah.blah.Blah at line 1
Run Code Online (Sandbox Code Playgroud)
那么......我应该如何配置POJO以便我能正确解析XML?
我正在尝试使用mathematica创建矩阵图.使用ArrayPlot []我得到一个非常好的数字,除了它被白色边缘包围的事实.在下面的例子中,我已经找到了问题的根源.
http://img689.imageshack.us/img689/8427/badmargin.png
如果我尝试导出生成的图形,它也会导出边距.我希望我的数组内容填充一定大小的矩形,以便它可以叠加在另一个图像上,但ArrayPlot函数会产生干扰的边距.
做什么?
QuickEdit:ImageCrop在我的情况下不起作用,因为a)我希望我的结果图像具有一定的大小,并且b)没有指定我想要移除自动版本的宽边距可能会弄乱我的图形(第一行可能很好例如,是白色的.
我正在尝试使用Mono.Cecil编写IL Weaver,并且为了在VS2010中保持可调试性,我需要PdbReaderProvider类或ISymbolProvider的一些类似实现.我从http://mono.ximian.com/daily/下载了最新的Mono dll ,但在zip中没有Mono.Cecil.Pdb.dll.我已经从https://github.com/jbevain/cecil/tree/master/Mono.Cecil下载了源代码,但我似乎无法在.net 4下编译该特定项目
.有人可以提供帮助吗我出来并指向Mono.Cecil.Pdb的编译工作.net dll,最好在里面有一个工作的PdbReaderProvider?
考虑以下:
如果开发人员有办法随时查看两个平台构建的当前状态(例如CCTray),则更为可取.这涉及Windows和Linux上的开发人员.
我在Linux和Mono上尝试过CruiseControl.net,尽管他们没有官方支持.虽然我无法运行Web界面,但是经过一些修改后,服务器的控制台版本似乎运行正常.CCTray悲惨地失败了.
你能推荐一些能达到上述要点的工具吗?
谢谢!
您可以将函数声明为如下内联:
#ifdef DEBUG
void DPrintf(NSString *fmt,...);
#else
inline void DPrintf(NSString *fmt,...) {}
#endif
Run Code Online (Sandbox Code Playgroud)
因此,当您不在DEBUG中时,该功能不会产生任何成本,因为它已经过优化和内联.如果你想拥有相同的东西但是对于类方法怎么办?
我的类声明如下:
@interface MyClass : NSObject {
}
+ (void)DPrintf:(NSString *)format, ...;
// Other methods of this class
@end
Run Code Online (Sandbox Code Playgroud)
我想将' DPrintf'转换为类似的东西,inline以便调用该方法没有成本.
但我不能这样做:
inline +(void)DPrintf:(NSString *)format, ...; {}
Run Code Online (Sandbox Code Playgroud)
如何为非调试编译关闭类的零成本静态方法?