我对单元测试比较陌生,而且我发现虽然很多消息来源说你应该编写单元测试,但是很少有人给出任何指示将它们放在你的项目中的指示.
我见过的唯一建议是将它们与生产代码放在一起,或构建一个镜像生产代码的目录结构.我在第一种方法中看到的问题是,当你完全构建系统时,很难提取出那些测试; 对于第二个,您将如何测试仅在包级别可见的功能?
是否有合适的方法来组织单元测试,以便您可以轻松地自动化构建过程并仍然可以访问需要测试的所有内容?
编辑:对于那些对特定语言感到疑惑的人,我主要使用Java.但是,我想找到一个与语言无关的解决方案,所以无论我在做什么平台,我都可以应用它.
我对我们在ci服务器中的设置有疑问.用于构建应用程序的maven命令在bamboo中配置为"mvn install deploy".
根据我的理解,这将调用所有阶段直到"安装",然后再次调用所有阶段直到"部署",这意味着并且正如我在日志中看到的那样,应用程序构建两次(两次编译,两次测试) )等等.这也意味着应用程序所需的构建时间几乎是所需的两倍.
所需要的只是"mvn deploy"来正确构建应用程序.
我的理解/观察是否正确?
是否可以指定SVG图像应该在CMYK中产生输出?如果是这样,这是一项大任务吗?如果图像的颜色是用RGB指定的,那么将它们转换为CMYK会很困难吗?
我目前正在使用SAX(Java)来解析一些不同的XML文档,每个文档代表不同的数据并且结构略有不同.因此,每个XML文档都由不同的SAX类(子类DefaultHandler)处理.
但是,有一些XML结构可以出现在所有这些不同的文档中.理想情况下,我想告诉解析器"嘿,当你到达一个complex_node元素时,只需用ComplexNodeHandler它来阅读它,然后给我回复结果.如果你到达了some_other_node,请用OtherNodeHandler它来阅读它然后给我回复结果".
但是,我看不出一个明显的方法来做到这一点.
我应该只是制作一个单片处理程序类,它可以读取我拥有的所有不同文档(并根除代码重复),还是有更智能的方法来处理它?
是否可以在JUnit测试中使用java.lang.instrument.Instrumentation?我使用mockrunner来模拟Servlet,并希望测量会话中存储的对象的大小
我如何计算进程打开或使用的文件的MD5哈希值?
文件可以是txt或exe
我当前的代码返回错误的exe,因为它正在运行
这是我目前的代码
public static string GetMd5HashFromFile(string fileName)
{
FileStream file = new FileStream(fileName, FileMode.Open);
MD5 md5 = new MD5CryptoServiceProvider();
byte[] retVal = md5.ComputeHash(file);
file.Close();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < retVal.Length; i++)
{
sb.Append(retVal[i].ToString("x2"));
}
return sb.ToString();
}
Run Code Online (Sandbox Code Playgroud)
干杯.
我不得不从字典中删除一些字段,这些字段的键位于列表中.所以我写了这个函数:
def delete_keys_from_dict(dict_del, lst_keys):
"""
Delete the keys present in lst_keys from the dictionary.
Loops recursively over nested dictionaries.
"""
dict_foo = dict_del.copy() #Used as iterator to avoid the 'DictionaryHasChanged' error
for field in dict_foo.keys():
if field in lst_keys:
del dict_del[field]
if type(dict_foo[field]) == dict:
delete_keys_from_dict(dict_del[field], lst_keys)
return dict_del
Run Code Online (Sandbox Code Playgroud)
这段代码有效,但它不是很优雅,我确信有更好的解决方案.
为了编写跨平台游戏,我需要哪些语言或库?我可以构建一个可以在所有平台上运行的游戏,还是我必须为每个平台重新编译?
我有这个程序:
CREATE OR REPLACE PROCEDURE CONV1(
pDate IN VARCHAR2,
pYear OUT number,
pMonth OUT number,
pDay OUT number
)
AS
lDate DATE;
BEGIN
lDate := to_date(pDate, 'DD.MM.YYYY HH24:MI:SS');
pYear := to_number(to_char(lDate, 'YYYY'));
pMonth := to_number(to_char(lDate, 'MM'));
pDay := to_number(to_char(lDate, 'DD'));
END CONV1;
/
Run Code Online (Sandbox Code Playgroud)
如果我只想要其中一个出局,我该如何调用此程序?(喜欢Select FMAN_STAT_CONV1('16.07.2010', pDay) from dual;(这不是工作顺便说一句))
格尔茨!