对于组成另一个对象作为其实现的一部分的对象,编写单元测试的最佳方法是什么,只有主要对象才会被测试?琐碎的例子:
class myObj {
public function doSomethingWhichIsLogged()
{
// ...
$logger = new logger('/tmp/log.txt');
$logger->info('some message');
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
我知道可以设计对象以便可以注入logger对象依赖项并因此在单元测试中进行模拟,但情况并非总是如此 - 在更复杂的场景中,您需要组合其他对象或调用静态方法.
由于我们不想测试logger对象,只有myObj,我们如何进行?我们用测试脚本创建一个stubbed"double"吗?就像是:
class logger
{
public function __construct($filepath) {}
public function info($message) {}
}
class TestMyObj extends PHPUnit_Framework_TestCase
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
这对于小对象来说似乎是可行的,但对于更复杂的API而言,这将是一个痛苦,其中SUT依赖于返回值.另外,如果你想测试对依赖项对象的调用,你可以使用模拟对象吗?有没有办法模拟由SUT实例化的对象而不是传入?
我已经阅读了关于模拟的手册页,但它似乎并没有涵盖这种依赖是由组合而不是聚合的情况.你怎么做呢?
我需要在python中编写一个脚本来检查一个受kerberos保护的网页.有没有可能从python中做到这一点,以及如何?该脚本将部署在安装了python 2.4.something的linux环境中.
dertoni
在过去的几天里,我一直在思考这个问题.我正在编写一个Web应用程序(实际上是在现有的广泛应用程序中添加一个屏幕).我知道使用"表格"进行布局是一个很大的禁忌.但在这个应用程序中,所有页面都使用表格进行布局.我决定使用div来做我的新页面.但我遇到了2个障碍.
我需要做的很多布局工作已经在其他页面上完成了,如果我改用div,我就无法重用其中任何一个(CSS和JS以及那种东西).这导致了更多的工作并推迟了我的完成日期.
布局的一些更复杂的部分使用div很难做到,使用表格很容易.也许它只是我"老派",因为我不是一个web/html有点人(我过去了).
那么,为什么我不能使用表格呢?我不是想要争论,只是想看看除了"正确的事情"类型之外是否有任何引人注目的论点.我知道这是正确的做法.我想知道为什么?
是否可以将SQL Server 2008数据库的备份还原到SQL Server 2005的实例上?
我需要处理sql server 2008中数据库备份的示例应用程序.但是我将无法安装2008.那么有可能在2005年恢复备份吗?
假设你有一长串的字符数为1或0,有点像bitvector,但在数据库列上.您如何查询知道设置/未设置的值?假设您需要知道char 500和char 1500是否为"true".
要求的简要说明
(这里有很多好的答案,感谢所有人,如果我得到这个飞行,我会更新).
探测器沿轨道运行,实时测量若干不同的物理参数(确定性),作为曲线距离的函数.用户可以在此过程中单击按钮以"标记"航点,然后使用GUI输入每个航点的详细信息(在人工时间,但数据采集继续进行).
在此之后,系统对获取的数据执行一系列计算/过滤/修改,同时考虑为每个航路点输入的约束.该过程的输出是一系列校正,也是曲线距离的函数.
该过程的第三部分涉及再次沿轨道运行,但这次将校正写入校正轨道的物理系统(仍然是曲线距离的函数).
我目前对您的输入/评论/警告的想法
我想确定的是我是否可以用PC + FPGA来做到这一点.FPGA会进行"数据采集",我会在PC上使用C#从缓冲区读取数据.航点信息可以通过WPF/Winforms应用程序输入,并存储在数据库/平面文件/任何待处理的"处理"中.
对于处理,我会使用F#.
FPGA将用于将信息"写入"物理机器.
我目前可以预见的一个问题是,处理算法是否需要采样频率,这使得缓冲的数据量太大.这意味着将一些处理卸载到FPGA - 至少是不需要用户输入的位.不幸的是,唯一的预处理算法是卡尔曼滤波器,用我用Google搜索的方法很难用FPGA实现.
我非常感谢您提供的任何反馈意见.
更新(此处及时添加额外信息)
在卡尔曼滤波器的入口处,我们每1ms看一次.但是在卡尔曼滤波器的另一侧,我们将每隔1米采样一次,我们所讨论的速度大约为2秒.
所以我想更准确的问题是:
public static IList<T> ConvertTo<T>(DataTable table)
{
if (table == null)
{
return null;
}
List<DataRow> rows = new List<DataRow>();
foreach (DataRow row in table.Rows)
{
rows.Add(row);
}
return ConvertTo<T>(rows);
}
public static T ConvertItem<T>(DataTable table)
{
T obj = default(T);
if (table != null && table.Rows.Count > 0)
{
obj = CreateItem<T>(table.Rows[0]);
}
return obj;
}
public static T CreateItem<T>(DataRow row)
{
T obj = default(T);
if (row != null)
{
obj = Activator.CreateInstance<T>();
Type entityType = typeof(T);
PropertyInfo[] properties …
Run Code Online (Sandbox Code Playgroud) 是否有TSQL命令连接到另一台服务器?
或者当您在查询窗口中时,连接到另一台服务器并显示查询窗口的键盘快捷键是什么?
我已经看到Ctrl + N 在某些屏幕中弹出了" 连接到服务器"对话框,但是当我在查询窗口中并按下Ctrl + N时,它只会打开另一个查询窗口.
USE命令允许您连接到当前服务器上的其他数据库,但是有一个命令可以让您连接到另一台服务器吗?
我正在使用SQL Server 2005.
我在页面上有一个任意大小的图像.作为输出,我需要一个固定大小的图像,比如90x120px.我希望用户通过拖放90x120px '窗口' 后面的大图像来选择图像区域.窗口将指定生成的图像.这样的事情是在Facebook图片上传时实现的.
我知道如何在获得裁剪坐标后立即处理后端的图像,没问题.我想我需要在隐藏的表单字段中发布裁剪坐标.用户的拖放操作应该让JavaScript填充字段,对吧?我是JS的新手,所以一步一步的指南会有很大帮助.
当然必须有办法轻松做到这一点!
我已经尝试了Linux等命令行应用程序sha1sum
,md5sum
但它们似乎只能计算单个文件的哈希值并输出一个哈希值列表,每个文件一个.
我需要为文件夹的整个内容(而不仅仅是文件名)生成单个哈希.
我想做点什么
sha1sum /folder/of/stuff > singlehashvalue
Run Code Online (Sandbox Code Playgroud)
编辑:澄清一下,我的文件位于目录树的多个级别,它们并非都位于同一个根文件夹中.
sql ×2
.net ×1
architecture ×1
arrays ×1
bash ×1
bitvector ×1
c# ×1
crop ×1
database ×1
datatable ×1
f# ×1
fpga ×1
generics ×1
hash ×1
html ×1
html-table ×1
image ×1
javascript ×1
kerberos ×1
layout ×1
linux ×1
photo ×1
php ×1
phpunit ×1
python ×1
qa ×1
real-time ×1
resize ×1
security ×1
sql-server ×1
t-sql ×1
unit-testing ×1