我有大约100个单元测试,覆盖率为%20,我正在努力增加覆盖范围,这也是一个开发项目,所以不断添加新的测试.
目前在每次构建之后运行我的测试是不可行的,他们需要大约2个时刻.
测试包括:
大多数功能都需要读取HTTP,执行TCP等.我无法更改它们,因为如果我改变这些测试,这就是项目的整体想法,测试内容将毫无意义.
另外,我认为我没有最快的工具来运行单元测试.我当前的设置使用VS TS与Gallio和nUnit作为框架.我认为VS TS + Gallio也比其他人慢一点.
你会建议我解决这个问题?我想在每一点点改变之后运行单元测试btu目前这个问题正在打断我的流程.
进一步澄清编辑:
代码高度耦合!不幸的是,变化就像一个巨大的反射过程.并且有一个鸡蛋综合症,我需要单元测试来重构这么大的代码,但如果我不重构它我就不能有更多的单元测试:)
高度耦合的代码不允许我将测试分成更小的块.此外,我不测试私人物品,这是个人选择,这使我能够更快地发展并仍然获得大量的好处.
并且我可以确认所有单元测试(具有适当的隔离)实际上非常快,并且我没有它们的性能问题.
进一步澄清:
代码高度耦合!不幸的是,变化就像一个巨大的反射过程.并且有一个鸡蛋综合症,我需要单元测试来重构这么大的代码,但如果我不重构它我就不能有更多的单元测试:)
高度耦合的代码不允许我将测试分成更小的块.此外,我不测试私人物品,这是个人选择,这使我能够更快地发展并仍然获得大量的好处.
并且我可以确认所有单元测试(具有适当的隔离)实际上非常快,并且我没有它们的性能问题.
我最近看到了很多关于互联网的设置工具.最近,我阅读了James Bennett的On包装文章,了解为什么没有人应该使用setuptools.从我在Freenode的#python时代开始,我知道那里有一些人绝对厌恶它.我会把自己算在他们中间,但我确实使用它.
我已经使用setuptools进行足够的项目来了解它的不足之处,我更喜欢更好的东西.我并不特别喜欢鸡蛋格式以及它是如何部署的.由于所有setuptools的问题,我还没有找到更好的选择.
我对像pip这样的工具的理解是,它意味着是一个easy_install替代品(不是setuptools).实际上,pip使用了一些setuptools组件,对吧?
我的大多数软件包都使用了setuptools-aware的setup.py,它声明了所有依赖项.当他们准备好了,我将构建一个sdist,bdist和bdist_egg,并将它们上传到pypi.
如果我想切换到使用pip,我需要做些什么样的更改才能摆脱easy_install依赖?声明的依赖项在哪里?我猜我需要摆脱使用egg格式,并提供源代码分发.如果是这样,我如何生成egg-info目录?或者我甚至需要?
这将如何改变我对virtualenv的使用?virtualenv不使用easy_install来管理环境吗?
这会如何改变我对"开发"命令提供的setuptools的使用?我不应该使用它吗?有什么选择?
我基本上试图了解我的开发工作流程的样子.
在任何人建议之前,我不是在寻找依赖于操作系统的解决方案.我主要关注的是debian linux,但deb包不是一个选项,因为Ian Bicking 在这里概述了这个原因.
我在访问SQL Server中的存储过程时遇到错误
Server Error in '/' Application.
Procedure or function 'ColumnSeek' expects parameter '@template', which was not supplied.
Run Code Online (Sandbox Code Playgroud)
当我通过.net的数据连接调用带有参数的存储过程时(System.data.SqlClient),即使我提供了参数,也会发生这种情况.这是我的代码.
SqlConnection sqlConn = new SqlConnection(connPath);
sqlConn.Open();
//METADATA RETRIEVAL
string sqlCommString = "QCApp.dbo.ColumnSeek";
SqlCommand metaDataComm = new SqlCommand(sqlCommString, sqlConn);
metaDataComm.CommandType = CommandType.StoredProcedure;
SqlParameter sp = metaDataComm.Parameters.Add("@template",SqlDbType.VarChar,50);
sp.Value = Template;
SqlDataReader metadr = metaDataComm.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)
我的存储过程是:
USE [QCApp]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[ColumnSeek]
@template varchar(50)
AS
EXEC('SELECT Column_Name, Data_Type
FROM [QCApp].[INFORMATION_SCHEMA].[COLUMNS]
WHERE TABLE_NAME = ' …Run Code Online (Sandbox Code Playgroud) 在使用JSP和Servlets在java中实现的Web应用程序中; 如果我在用户会话中存储信息,则从同一浏览器的所有选项卡共享此信息.如何在浏览器选项卡中区分会话?在这个例子中:
<%@page language="java"%>
<%
String user = request.getParameter("user");
user = (user == null ? (String)session.getAttribute("SESSIONS_USER") : user);
session.setAttribute("SESSIONS_USER",user);
%>
<html><head></head><body>
<%=user %>
<form method="post">
User:<input name="user" value="">
<input type="submit" value="send">
</form>
</body></html>
Run Code Online (Sandbox Code Playgroud)
将此代码复制到jsp页面(testpage.jsp)中,将此文件部署在服务器上的Web应用程序的现有上下文中(我使用Apache Tomcat),然后使用正确的URL(localhost/context1/testpage.jsp)打开浏览器(FF,IE7或Opera ),键入您在输入中的姓名并提交表格.然后在同一浏览器中打开一个新选项卡,然后您可以在新选项卡上看到您的名称(从会话中获取).小心浏览器缓存,有时似乎不会发生,但它在缓存中,刷新第二个选项卡.
谢谢.
是否可以返回并将工作项与已经检入TFS的代码联系起来?例如 ...开发人员选错了工作项,或忘记选择工作项?我可以看到ChangeSets的工作项详细信息,但工作项页面是只读的.
我有兴趣将xml文档中根元素的标记名称分配给xslt变量.例如,如果文档看起来像(减去DTD):
<foo xmlns="http://.....">
<bar>1</bar>
</foo>
Run Code Online (Sandbox Code Playgroud)
我想将字符串'foo'分配给xslt变量.有没有办法引用它?
谢谢,马特
我们有许多项目使用共享组件(dll)的共同基础.目前,每个项目的开发构建都链接到从组件主干构建的dll.(即主干版本使用来自其他主干版本的dll)
当我们进行发布构建时,我们有一个脚本遍历项目文件并将中继引用替换为组件的特定编号版本(从标记分支构建)
我认为这削弱了我们在开发过程中所做的测试,因为我实际工作的项目是使用不同的dll来发布版本将使用的.我希望始终针对组件的编号版本进行开发,并且只在有特定需求时才更新它们.
然而,团队中的其他人认为除非我们针对主干进行开发(并且每个版本更新到组件的更新版本),否则我们将遇到以下问题:(a)我们的产品几乎不会更新到新版本的组件( b)当我们确实需要更新它将是一项艰巨的任务,因为组件源/接口将发生如此大的变化.
你遵循什么做法,为什么?
编辑:对不起所有,我刚刚意识到我有一些困惑的事情,提到有几个主要产品共享组件 - 虽然他们共享组件,他们不在同一台PC上运行.我关心的是这样的事实:因为组件可能随着产品的每次发布而改变(即使没有特定的更新组件的要求),测试会遗漏在组件中完成的一些微妙变化,而与组件无关正在对产品进行的具体工作.
从Team Foundation Server 2008每晚构建中自动生成发行说明文本文件的最佳方法是什么?