我正在尝试使用Scalatest为我的Java应用程序编写一些测试代码.我想,由于Scala具有更可读的语法,因此可以获得更易读的测试代码.
到目前为止,这是我管理的:
package com.xyz
import org.scalatest.FlatSpec
import org.scalatest.matchers.ShouldMatchers
import com.xyz.SecurityService
import org.mockito.Mockito._
import org.scalatest.mock.MockitoSugar
import org.mockito.Matchers._
import javax.servlet.jsp.tagext.Tag
class CheckRoleTagSpec extends FlatSpec with ShouldMatchers with MockitoSugar {
behavior of "CheckRole tag"
it should "allow access when neither role nor root defined" in {
val securityServiceMock = mock[SecurityService]
val tag = new CheckRoleTag()
tag.setSecurityService(securityServiceMock)
tag.setGroup("group")
tag.setPortal("portal")
tag.setRoot(false)
tag.setRole(null)
tag.doStartTag should be(Tag.SKIP_BODY)
}
}
我对这段代码感到非常失望.实际上,我需要用Java编写它.请帮助我使它更像scala和功能.
我正在尝试编写一个函数来打印常见STL容器(向量,列表等)的表示.我给函数一个模板参数T,例如,它可能代表向量.我在获取类型为T的迭代器时遇到问题
vector<int> v(10, 0);
repr< vector<int> >(v);
Run Code Online (Sandbox Code Playgroud)
...
template <typename T>
void repr(const T & v)
{
cout << "[";
if (!v.empty())
{
cout << ' ';
T::iterator i;
for (i = v.begin();
i != v.end()-1;
++i)
{
cout << *i << ", ";
}
cout << *(++i) << ' ';
}
cout << "]\n";
}
Run Code Online (Sandbox Code Playgroud)
...
brett@brett-laptop:~/Desktop/stl$ g++ -Wall main.cpp
main.cpp: In function ‘void repr(const T&)’:
main.cpp:13: error: expected ‘;’ before ‘i’
main.cpp:14: error: ‘i’ was not declared in …Run Code Online (Sandbox Code Playgroud) #!/usr/bin/perl
open(SARAN,"first.txt") or die "Can't Open: $!\n";
while($line=<SARAN>)
{
print "$line\n";
}
close SARAN;
Run Code Online (Sandbox Code Playgroud)
嗨,在上面的perl脚本中,我需要一个功能...在first.txt中,每一行都以前面的一些空格开始..我需要打印前面没有空格的行...怎么做.
谢谢..
我们将使用旧数据库.因此,在任何情况下(来自报告模块)我们都不修改数据库/表/模式是非常关键的,因此我想设置持久性上下文,其中一些持久性单元为只读(用于报告模块)和一些正常的JTA启用.
我们已经考虑过创建两个帐户以便在这些持久性单元中使用,一个将被授予只读访问权限,另一个将具有读写访问权限.
我想知道我们可以使用persistence.xml文件做一些更简单的事情,或者可能是JDBC驱动程序级别,这样我与DB的连接是有选择的只读和基于持久性单元活动的读写.或正在使用的数据库驱动程序URL ...我们使用SQL-Server作为数据库服务器...如果这有点帮助.
我有一些表store_section(id,parent_id,label),我想改变一些行,设置PARENT_ID = NULL.
我试图:
$record = $table->getTable()->find( $id );
$record->parent_id = null;
$record->save();
Run Code Online (Sandbox Code Playgroud)
但这不起作用.如何在Doctrine中的表中设置NULL,在上面的示例中,parent_id变为= 0(不是= NULL)?
Thnx的回复!
在某些库中,通常的做法是为每个错误条件创建自定义Exception类,例如:
class FileNotFound_Exception extends Exception {}
Run Code Online (Sandbox Code Playgroud)
您可以处理某种类型的Exception,但是您无法读取所有库的所有源代码以记住每个Exception类,并且无法充分利用自定义Exceptions.大多数时候我只是用基类Exception类来捕获它们:
catch (Exception $e)
{
// log and display friendly error
}
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以获得自定义异常类的好处,而无需编写长列表的catch块?我喜欢Exceptions,但不知道如何正确使用它们.谢谢.
这是一个初学者的问题:为什么这会打破/给出错误?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *strtrim_right(char *p)
{
char *end;
int len;
len = strlen( p);
while (*p && len)
{
end = p + len-1;
if(isalpha(*end))
*end =0;
else
break;
}
return(p);
}
int main ()
{
char *x="PM123BFD";
strtrim_right(x);
printf("%s", x);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 这是一个很长的帖子,所以请耐心等待.我不确定它主要是关于ASP.NET会话状态行为,NInject,应用程序设计还是重构.继续阅读,然后你可以决定...... :-)
首先,有点背景.我们正在努力将大型网上商店重构为更易于维护的结构化设计.网上商店目前在.NET 3.5上运行,但设计更像是传统ASP时代的宿醉.显然,我们无法一次性解决所有问题,因此许多功能/技术/方法必须作为一个给定的.考虑到这一点...
该应用程序在上下文对象中维护与当前会话(用户配置文件,购物车,会话选择等)有关的所有内容,该上下文对象只是一个大型XML文档,可以作为字符串从Session中序列化和反序列化.XML格式也很重要,因为渲染是通过XSLT完成的.
这导致了许多问题:
我们所做的是尝试在xml文档周围引入一个强类型包装器,它将其分解为不同的关注点,并透明地管理应用程序的其余部分的生命周期.
我们的目标是以下工作流程:
在请求开始时,我们从会话中存储的xml字符串填充会话文档.
应用程序的其余部分仅通过强类型包装器与其进行交互.整个应用程序使用相同的实例,不必担心何时检索或将状态保存回会话.
由于我们使用NInject(v1)作为首选IOC,因此我们决定使用它来管理上下文对象的生命周期.上下文对象用OnePerRequest属性包装,dispose方法连接到一个方法,该方法将xml文档作为字符串保存回Session.
我们很快遇到了NInject OnePerRequest模块似乎无法访问SessionState的问题.我们尝试的第一件事是黑客,我们将Session对象保存在变量中,以确保我们仍然可以写入它.这似乎适用于开发机器,但很明显它在移动到进程状态时没有.
我们尝试从OnePerRequest行为/模块继承,并添加IRequiresSessionState标记接口(OnePerRequestRequiresSessionState).但是,这还不够,因为NInject用于释放引用和清理的方法被连接到EndRequest方法.会话在EndRequest中可用,但它已经被序列化到进程外状态服务器,因此当在下一个请求开始时检索会话字符串时,不会反映现在更改的内容.然后我们决定改变偶数t来连接.我们抛弃了EndRequest并将我们的OnePerRequestRequiresSessionState"release all"方法连接到PostRequestHandlerExecute事件,该事件是在会话数据被序列化到进程之前.
这似乎有效.在单个服务器和Web场上.然后我们注意到奇怪的行为.似乎有两个不同版本的上下文,你会在它们之间随机切换.添加一些东西到购物车,它不存在.转到浏览其他产品,之前的产品将显示在购物车中.
经过一些追踪,我们发现了罪魁祸首:Response.Redirect.在整个网站上洒满了数百个地方的是Response.Redirect(url);. 使用此版本的重定向,将立即停止执行页面.这意味着不会触发PostRequestHandlerExecute,并且NInject不会抛弃当前版本的Context对象......一切都会崩溃.没有正确创建新版本等.EndRequest被解雇,这就是普通NInject OnePerRequest模块正常工作的原因,而不是我们试图使用会话状态的标准化版本.
当然,还有一个覆盖Response.Redirect,您可以在其中传递一个布尔值,告诉它是否终止现有页面或继续执行 - Response.Redirect(url,false).继续显然会触发我们的事件,一切正常但是......它继续执行页面的其余部分!这意味着执行调用Redirect之后的所有内容,我们完全不知道这意味着什么(因为现有网站希望它停止).
那么,有什么建议吗?到目前为止,我们已经讨论过:
我ScrollView在我的Android布局中使用但它显示
IllegalStateException "Scrollview can host only one direct child"
我怎样才能避免这种异常?
崩溃信息:
07-19 15:58:22.308 21372 21372 D AndroidRuntime: Shutting down VM
07-19 15:58:22.313 21372 21372 E AndroidRuntime: FATAL EXCEPTION: main
07-19 15:58:22.313 21372 21372 E AndroidRuntime: Process: com.languoguang.helloworld, PID: 21372
07-19 15:58:22.313 21372 21372 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.languoguang.helloworld/com.languoguang.helloworld.plugin_homeadd.activity.AddDeviceWifiSettingActivity}: android.view.InflateException: Binary XML file line #254: ScrollView can host only one direct child
07-19 15:58:22.313 21372 21372 E AndroidRuntime: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3190)
07-19 15:58:22.313 21372 21372 E AndroidRuntime: …Run Code Online (Sandbox Code Playgroud) 这很奇怪,我希望我能正确解释.
当我使用VS2008本地调试时,IE8看起来像FF和Chrome(减去明显的).它运作良好,我很高兴.
当我使用IE8与我们的IIS6框(Win2003)或卡西尼,按钮没有对齐,javascript错误发生,并发生一些其他CSS异常:表格单元格缺少彩色边框,div元素具有2-3个像素的不同尺寸.
如果有人碰到过这个,请告诉我 - 这完全令我感到困惑
asp.net-mvc internet-explorer iis-6 internet-explorer-8 asp.net-mvc-2
php ×2
string ×2
android ×1
asp.net ×1
asp.net-mvc ×1
c ×1
c++ ×1
doctrine ×1
file ×1
iis-6 ×1
jdbc ×1
jpa ×1
lifecycle ×1
ninject ×1
orm ×1
perl ×1
pointers ×1
readonly ×1
redirect ×1
regex ×1
repr ×1
scala ×1
scalatest ×1
scrollview ×1
sql-server ×1
stl ×1
templates ×1
try-catch ×1
unit-testing ×1