我一直在做一些OO Perl编程,我想知道:哪个是执行单元测试的最佳方法?
到目前为止,我一直在使用Test :: Simple模块来执行测试,但感觉不足以满足我的需求.
你能指点我一些很好的模块吗?
我想知道在以下背景下,深度复制是如何工作的:
from copy import deepcopy
def copyExample:
self.myDict = {}
firstPosition = "First"
firstPositionContent = ["first", "primero"]
secondPosition = "Second"
secondPositionContent = ["second"]
self.myDict[firstPosition] = firstPositionContent
self.myDict[secondPosition] = secondPositionContent
return deepcopy(self.myDict)
def addExample(self):
copy = self.copyExample()
copy["Second"].add("segundo")
Run Code Online (Sandbox Code Playgroud)
它是否返回对字典中列表的引用?或者它是否按预期工作并复制具有不同引用的新列表中的每个列表?
我知道什么是深层复制(所以没有必要解释深层和浅层之间的区别),但我想知道它是否像我期望的那样工作,因此在我使用时不会更改实例变量addExample().
我最近阅读了Perl.com文章中的"Perl中面向对象的异常处理".在Perl中使用异常是否有意义?
我目前正在开发一个我的小项目,它以动态方式生成SQL调用以供其他软件使用.SQL调用事先是未知的,因此我希望能够对生成SQL的对象进行单元测试.
您是否了解如何才能做到这一点的最佳方法?请记住,没有可能的方法来了解要生成的所有可能的SQL调用.
目前我唯一的想法是使用regex从db创建接受的SQL的测试用例,并确保SQL将编译,但这不能确保调用返回预期的结果.
编辑:添加更多信息:
我的项目是Boo的扩展,允许开发人员使用一组属性标记他的属性.此属性用于标识开发人员如何将对象存储在DB中.例如:
# This attribute tells the Boo compiler extension that you want to
# store the object in a MySQL db. The boo compiler extension will make sure that you meet
# the requirements
[Storable(MySQL)]
class MyObject():
# Tells the compiler that name is the PK
[PrimaryKey(Size = 25)]
[Property(Name)]
private name as String
[TableColumn(Size = 25)]
[Property(Surname)]
private surname as String
[TableColumn()]
[Property(Age)]
private age as int
Run Code Online (Sandbox Code Playgroud)
好主意是生成的代码不需要使用反射,但它会在编译时添加到类中.是的,编译需要更长的时间,但根本不需要使用Reflection.我目前有代码工作生成所需的方法,在编译时返回SQL,它们被添加到对象并可以被调用,但我需要测试生成的SQL是否正确:P
我是Perl的新手,我想知道以下哪个循环更有效:
my @numbers = (1,3,5,7,9);
foreach my $current (@numbers){
print "$current\n";
}
Run Code Online (Sandbox Code Playgroud)
要么
my @numbers = (1,3,5,7,9);
foreach (@numbers){
print "$_\n";
}
Run Code Online (Sandbox Code Playgroud)
我想知道这一点,以便知道$ _的使用是否更有效,因为它是放在寄存器中,因为它是常用或不常用的.我已经编写了一些代码,我正在尝试清理它,并且我发现我使用的第一个循环比第二个循环更频繁.
我有以下情况:
有一个工具可以从Web界面获取XSLT并将XSLT嵌入到XML文件中(应该有人被解雇)."不幸的是"我在一个法语国家工作,因此XSLT有很多带有重音符号的单词.当XSLT嵌入到XML中时,该工具会将所有重音转换为其HTML代码(Iacute,igrave等...).
我的Perl代码正在从XML中检索XSLT,并使用Xalan命令行工具针对其他XML执行它.每次XSLT中都有一些重音时,Xalan工具会抛出异常.
我最初做一个正则表达式来改变XSLT中的所有重音:
# the & is omitted in the codes becuase it will be rendered in the page $xslt =~s/Aacute;/Á/gso; $xslt =~s/aacute;/á/gso; $xslt =~s/Agrave;/À/gso; $xslt =~s/Acirc;/Â/gso; $xslt =~s/agrave;/à/gso;
但这样做意味着我必须为每个重音代码写一个正则表达式....
我的问题是,如果没有为每个代码编写正则表达式,有没有这样做呢?(认为这是唯一的解决方案,想要呕吐.)
顺便说一句,该工具是TeamSite,它很糟糕.....
编辑:我忘了提到我需要一个Perl唯一的解决方案,安全性不允许我安装他们没有检查一周左右的任何类型的库:(
我正在开发一个个人项目,虽然我有一个wiki,但我想在svn存储库中添加不同的文档文件.这些文件包括XML(由monodoc生成)以及UML图(用dia生成).
在这个好主意中,我听到/读到关于不将二进制数据添加到svn repo并尝试保留代码的评论,是吗???
我正在开发一个我想在开源中发布的lib.我已经开始为代码编写测试了,我想知道我是如何测试.Net对象中的属性的.可以说我有以下内容:
public class Person{
#region variables
private string _name = String.Empty;
private string _surname = String.Empty;
#region properties
public string Name{
get{
return _name;
}
}
public string Surname{
get{
return _surname;
}
set{
_surname = value;
}
}
}
我有两个与代码相关的问题:
我想测试那么简单的属性,因为我已经发现其他代码中的错误是Itellinsense做错了自动完成而属性没有返回正确的变量.
更新:
我不是说简单的属性就像示例中那样,它们确实有一些逻辑,并且很难调试.编写使用setter来测试getter的测试,反之亦然,因为如果出现故障,我不知道应该指责哪种方法.我正在使用属性,因为它们被添加为公共变量,后来需要添加更多逻辑.