我尽可能使用 TDD:
然后...
这就是代码覆盖率下降的地方——我感到很难过。
但是,我自由地扩展[CoverageExclude]了这些具体的类,覆盖率再次上升。
但是,我没有感到悲伤,而是感到肮脏。尽管无法对具体类进行单元测试,但我还是觉得自己在作弊。
我感兴趣的是听你的项目是如何组织的,也就是你怎么安排实际的代码可以对代码进行测试无法进行测试。
我想也许一个不错的解决方案是将不可测试的具体类型分离到它们自己的程序集中,然后禁止在[CoverageExclude]包含可测试代码的程序集中使用。当在可测试程序集中错误地找到此属性时,这也可以更轻松地创建 NDepend 规则以使构建失败。
编辑:这个问题的本质涉及这样一个事实,即您可以测试使用模拟接口的东西,但您不能(或不应该!)对那些接口的真实实现的对象进行单元测试。下面是一个例子:
public void ApplyPatchAndReboot( )
{
_patcher.ApplyPatch( ) ;
_rebooter.Reboot( ) ;
}
Run Code Online (Sandbox Code Playgroud)
修补程序和重启程序被注入到构造函数中:
public SystemUpdater(IApplyPatches patcher, IRebootTheSystem rebooter)...
Run Code Online (Sandbox Code Playgroud)
单元测试看起来像:
public void should_reboot_the_system( )
{
... new SystemUpdater(mockedPatcher, mockedRebooter);
update.ApplyPatchAndReboot( );
}
Run Code Online (Sandbox Code Playgroud)
这很好用 - 我的 UNIT-TEST 覆盖率为 100%。我现在写:
public class ReallyRebootTheSystemForReal : IRebootTheSystem
{
... call some API to really (REALLY!) reboot
}
Run Code Online (Sandbox Code Playgroud)
我的 UNIT-TEST 覆盖率下降,无法对新课程进行 UNIT-TEST。当然,我会添加一个功能测试并在我有 …
我是PHP的初学者.
我要做的是停止来自其他网页的Post Data.
我遇到的问题是让某人复制我的表格并将其粘贴在他们的网站上.我希望能够阻止Post Data在我的电子邮件表单上运行脚本.
我怎样才能做到这一点?如果我不够清楚,请告诉我.
我的PHP联系表单在一个带有条件语句的页面上运行.即如果数据签出,请提交.
我正在尝试使用LINQ从字典中检索一些数据.
var testDict = new Dictionary<int, string>();
testDict.Add(1, "Apple");
testDict.Add(2, "Cherry");
var q1 = from obj in testDict.Values.Where(p => p == "Apple");
var q2 = from obj in testDict.Where(p => p.Value == "Apple");
Run Code Online (Sandbox Code Playgroud)
上面的行q1和q2都导致编译器错误.
error CS0742: A query body must end with a select clause or a group clause
Run Code Online (Sandbox Code Playgroud)
如何使用LINQ在字典中查找值?
谢谢,
干草堆
类具有ID属性,此属性从SQL表的主键列获取值.
如果我写的话,这是一个好习惯
public override int GetHashCode()
{
return this.ID + GetType().GetHashCode();
}
Run Code Online (Sandbox Code Playgroud)
进入我的班级?(等于已经以相同的方式覆盖了.)
我知道,这很可怜,但今天早上我只是在我的机器上安装了IE8.马上,我遇到了一个明显的问题,尽管我知道答案是正确地盯着我,但我已经把它弄乱了很久.
首先,这里是网站:www.mchenry.edu 在IE8中查看它并将鼠标悬停在顶部横幅图像上 - 看到一切向下移动?这是某种类型的文字装饰或边框问题,但我无法弄清楚哪一个.在我们的测试环境中,我甚至试图获得真正具体的
#banner p#img a:hover {text-decoration: none};
Run Code Online (Sandbox Code Playgroud)
但这没有任何作用.更令人烦恼的是,我无法让它出现在IE6,7或FF,Safari,Opera等中.头.反对.台.
感谢您有任何见解.
我有一个正在测试的对象,它对数据访问对象进行了相当复杂的调用.它看起来像
object.DoSomething(somestring,someObject,someOtherObject,someOtherOtherObject)
在我的测试结构中,我有一个模拟版本的对象,我想测试Dosomething被调用somestring =="value1"和someObject.porpertyA =="value2".
我不能使用简单的AssertWasCalled()重载,因为我不知道(或关心)someOtherObject.我注意到另一个重载需要一个设置约束的动作,但我从未见过它.
SuiteClasses可以很好地处理类的列表{Test1.class,Test2.class},但是当我尝试生成类的静态列表时,它表示不兼容的类型:required java.lang.Class<?>但是找到java.lang.Class<?>[]
我错过了什么?
@RunWith(Suite.class)
@Suite.SuiteClasses(TestSuite.classes)
public class TestSuite {
public static Class<?> [] classes;
static {
classes = new Class<?> [1];
classes[0] = MyTest.class;
}
}
Run Code Online (Sandbox Code Playgroud) 有关使用jQuery进行"内联"编辑的指南吗?
我知道我在这里没有使用正确的术语,但基本上你点击了一些文本,动态区域变为带有提交按钮的可编辑输入框.
jQuery有内置的功能吗?
如果您了解创建cron作业的gem,那么这个问题可能才有意义.我的schedule.rb中有一项任务
every 1.day, :at => '4am' do
command "cd #{RAILS_ROOT} && rake thinking_sphinx:stop RAILS_ENV=#{RAILS_ENV}"
command "cd #{RAILS_ROOT} && rake thinking_sphinx:index RAILS_ENV=#{RAILS_ENV}"
command "cd #{RAILS_ROOT} && rake thinking_sphinx:start RAILS_ENV=#{RAILS_ENV}"
end
Run Code Online (Sandbox Code Playgroud)
但是,当我使用更新我的crontab时
whenever --update-crontab appname --set environment=production
Run Code Online (Sandbox Code Playgroud)
cron作业仍然有RAILS_ENV =开发.我的生产和开发任务现在是一样的,我只需要改变环境变量,因为thinking_sphinx需要知道当前的环境.关于如何做到这一点的任何想法?
谢谢!