我正在使用Selenium测试一个使用Spring开发的Web应用程序来检查Web应用程序是否为用户显示了正确的内容,并且他能够执行规范中的所有操作.
其他开发人员正在使用内存中的假Hibernate数据库(HSQLDB)进行单元测试.显然,我必须使用程序使用的真实数据库进行测试.Spring应用程序上下文的JDBC参数由Spring在运行时加载(或编译时用于构建WAR文件).Spring使用org.springframework.beans.factory.config.PropertyPlaceholderConfigurer找到的属性来配置webapp和测试的应用程序上下文,并且测试和webapp共享XML配置文件.
根据Maven配置文件,单元测试或集成测试,属性需要不同.
我尝试了几种方法,没有成功:
为什么当前的构建配置与开发人员配置文件(开发人员,测试服务器......)+测试配置文件(单元测试)同时运行并且属性没有相互覆盖?因为Maven会在启动单元测试时使Spring查看src/test/resources,并在启动构建目标时查看src/main/resources.不幸的是,没有像这样的集成测试的默认配置.
简单的问题:
我打电话:
DateTime.TryParseExact("May 16 13:47:12 2012", "MMM dd hh:mm:ss yyyy", System.Globalization.CultureInfo.GetCultureInfo("en-US"), DateTimeStyles.None, out parsedStartDate)
Run Code Online (Sandbox Code Playgroud)
结果是假的.
我为什么做错了?
我有一个日志文件,如下所示:
2012-05-04 01:10:35; 301383027; 00133608663205759673480010256592; 103;错误;摘要处理:119; blah1
blah2
blah3
2012-05-02 01:00:22; 301382163; 00133591322220336011720010256592; 103;错误;摘要处理:119; blah4
blah5
blah6
2012-05-02 01:00:23; 301382163; 00133591322220336011720010256592; 103;错误;摘要处理:119; blah7
blah8
blah9
我希望在每个匹配3个匹配的组中有3个匹配:日期,严重性和消息.
我试过用这种模式
(20[0-9]{2}-[0-2][0-9]-[0-9]{2} [0-2][0-9]:[0-5][0-9]:[0-5][0-9]);[^;]*;[^;]*;[^;]*;([^;]*);(.*)
Run Code Online (Sandbox Code Playgroud)
启用单行选项后,我有一个匹配(整个输入),如果禁用此选项,则不会完全捕获消息(仅与日期在同一行上的部分).
我怎么能拥有与我想要正确捕获的3个值的日志条目一样多的匹配?
编辑:我试图捕获这样的匹配:
日期: 2012-05-04 01:10:35
严重性:错误
消息: AbstractTreatment:119; blah1
blah2
blah3
我正在尝试并行化我的代码以使其运行得更快.到目前为止,一直都是头痛而且没有结果.
我想同时更新几个DataGridViews:
Parallel.Invoke(
() => updateDgv1(),
() => updateDgv2(),
() => updateDgv3()
);
Run Code Online (Sandbox Code Playgroud)
我尝试过使用网上随处可见的简单(但可能不是最佳)方式(例如http://msdn.microsoft.com/en-us/library/ms171728(v=vs.85).aspx).
private void updateDgv1() {
/* some stuff */
assignValue(this.dgv1, colPos, rowPos, value); /* in a loop */
}
delegate void AssigneValueCallback(DataGridView dgv, int columnPos, int rowPos, string valeur);
public void assignValue(DataGridView dgv, Form form, int columnPos, int rowPos, string value)
{
if (dgv.InvokeRequired)
{
AssigneValueCallbackd = new AssigneValueCallback(assignValue);
dgv.Invoke(d, new object[] { dgv, columnPos, rowPos, value });
}
else
{
dgv[columnPos, rowPos].Value = value; …Run Code Online (Sandbox Code Playgroud)