通过Peter Norvig的解决每一个数独拼图文章,我遇到了一些我以前从未见过的Python习语.
我知道函数可以返回一个元组/值列表,在这种情况下,您可以为结果分配多个变量,例如
def f():
return 1,2
a, b = f()
Run Code Online (Sandbox Code Playgroud)
但是以下各项的含义是什么?
d2, = values[s] ## values[s] is a string and at this point len(values[s]) is 1
Run Code Online (Sandbox Code Playgroud)
如果len(values[s]) == 1,那么这个陈述与此有何不同d2 = values[s]?
关于在作业中使用下划线的另一个问题:
_,s = min((len(values[s]), s) for s in squares if len(values[s]) > 1)
Run Code Online (Sandbox Code Playgroud)
下划线是否具有基本上丢弃列表中返回的第一个值的效果?
我正在开发一个Spring MVC项目,我对源代码树中的所有各种组件进行了单元测试.
例如,如果我有一个HomeController需要LoginService注入的控制器,那么在我的单元测试中,HomeControllerTest我只是将对象实例化为正常(在Spring之外)并注入属性:
protected void setUp() throws Exception {
super.setUp();
//...
controller = new HomeController();
controller.setLoginService( new SimpleLoginService() );
//...
}
Run Code Online (Sandbox Code Playgroud)
这对于将每个组件作为一个独立的单元进行测试非常有用 - 除了我在项目中有几十个类,在编写一个类并为它编写成功的单元测试后,我一直忘记更新我的Spring MVC上下文文件部署的应用程序中的实际布线.我发现当我将项目部署到Tomcat并从非有线bean中找到一堆NullPointers时,我忘了更新上下文文件.
所以,这是我的问题:
这是我的第一个Spring项目 - 正如我所做的那样,为单个bean创建单元测试是正常的,然后创建第二套测试(集成测试)来测试一切是否与实际应用程序上下文一致?这是否有既定的最佳实践?
另外,如何将单元测试与集成测试分开?我有所有的源代码src,单元测试test- 应该有第二个测试文件夹(如test-integration)用于集成测试用例?
由于这是我的第一个春季项目,我很好奇其他人通常会做这类事情 - 而不是重新发明轮子我宁愿问社区其他人.
我见过Veloedit,它似乎有很好的语法高亮,但是不允许正在编辑的文件中的制表符(wtf?),也不了解HTML.
通过一点谷歌搜索,我发现Veloecipse,声称在Veloedit上构建并添加HTML支持 - 但似乎与Eclipse 3.4不兼容.
是否还有其他人使用的其他Velocity模板编辑器插件?
理想的解决方案将具有以下功能:
更新:请参阅下面的答案
我不太确定这是怎么发生的,但不知何故,一个完全空的目录层次结构最终出现在我的存储库中:
com/
com/companyname/
com/companyname/blah/
com/sun/
com/sun/java/
com/sun/java/jax_rpc_ri/
Run Code Online (Sandbox Code Playgroud)
我认为发生的事情是这些目录中确实有文件,但是开发人员意识到他/她不应该首先检查它们,因为这些是构建过程的副产品,所以他/她删除了文件,但不知何故,空目录作为古代遗物留在存储库中.
如何从CVS中删除它?我似乎能够在google上找到的唯一结果是说不应该删除空目录,因为CVS不会首先保留它们,并且-P(prune)选项cvs update应该从中删除它们工作目录 - 如果您的存储库中实际有空目录,那么这将是零帮助.
A cvs remove并且cvs commit似乎没有处理这种情况:
$ cvs remove -Rf com
cvs remove: Removing com
cvs remove: Removing com/companyname
cvs remove: Removing com/companyname/blah
cvs remove: Removing com/sun
cvs remove: Removing com/sun/java
cvs remove: Removing com/sun/java/jax_rpc_ri
$ cvs commit com
cvs commit: Examining com
cvs commit: Examining com/companyname
cvs commit: Examining com/companyname/blah
cvs commit: Examining com/sun
cvs commit: Examining com/sun/java
cvs commit: Examining com/sun/java/jax_rpc_ri …Run Code Online (Sandbox Code Playgroud) 我正在处理一些我从其他人手中接过的HTML和Javascript代码.该页面每十秒重新加载一个数据表(通过异步请求),然后使用一些DOM代码重新构建表.有问题的代码看起来像这样:
var blah = xmlres.getElementsByTagName('blah');
for(var i = 0; i < blah.length; i++) {
var td = document.createElement('td');
var select = document.createElement('select');
select.setAttribute("...", "...");
select.onchange = function() {
onStatusChanged(select, callid, anotherid);
};
td.appendChild(select);
}
Run Code Online (Sandbox Code Playgroud)
但是当onchange为一个<select>元素触发事件时,似乎将相同的值传递给表中每个表的onStatusChanged()方法<select>(我已经在循环的每次迭代中验证了,callid并且anotherid被赋予了新的,不同的值).
我怀疑这是因为我使用select.onchange = function()语法设置事件处理程序的性质.如果我理解这是如何正常工作的,那么这个语法将onchange事件的闭包设置为一个函数,该函数引用这两个引用,最终得到它们在循环的最后一次迭代中设置的最终值.触发事件时,由callid和引用anotherid的值是最后一次迭代中设置的值,而不是在单个迭代中设置的值.
有没有办法可以复制我传递给的参数的值onStatusChanged()?
我更改了标题以更好地反映问题和接受的答案.
这是一个奇怪的问题,但它已经困扰了我几个月了.我使用Wicket + Hibernate构建了一个基于JPA的Web应用程序(使用Maven构建),并希望直接测试DAO层.我创建了一个特定的src/test/resources/META-INF/persistence.xml文件,用于测试,但是已经遇到与WTP等冲突.为了解决这些问题,我创建了一个单独的测试项目,其中单元测试是实时的.有没有更好的方法来管理JPA项目的单元测试而不在持久性文件之间进行决斗?
附录:其他测试框架(例如TestNG)是否会使这更容易?
在Eclipse中,可以配置某些"最喜欢"的类,当调用代码完成时,将查找这些类,以查看是否可以为方法添加静态导入(这在Preferences> Java> Editor> Content Assist> Favorites下).
例如,我可以开始输入assertT,Eclipse会询问我是否要添加静态导入org.junit.Assert.assertTrue;.

在IntelliJ中可以做同样的事情吗?
此问题中详述的方法将为*type(static import org.junit.Assert.*)添加导入,但我不想添加star-imports.我更喜欢只导入我正在使用的方法.