我对软件测试很新.我想知道对观察者模式进行单元测试的正确方法是什么?例如,如果我们实现了以下4个类:主题类(attach/detach/notify),Observer接口类(update virtual method),ConcreteSubject类和ConcreteObserver(具体更新方法).如何为每个类编写测试轨道?有什么好的例子可以参考吗?
谢谢你的任何投入.
所以有简单的课程
class mySafeData
{
public:
mySafeData() : myData(0)
{
}
void Set(int i)
{
boost::mutex::scoped_lock lock(myMutex);
myData = i; // set the data
++stateCounter; // some int to track state chages
myCondvar.notify_all(); // notify all readers
}
void Get( int& i)
{
boost::mutex::scoped_lock lock(myMutex);
// copy the current state
int cState = stateCounter;
// waits for a notification and change of state
while (stateCounter == cState)
myCondvar.wait( lock );
}
private:
int myData;
int stateCounter;
boost::mutex myMutex;
};
Run Code Online (Sandbox Code Playgroud)
调用每个函数的无限循环中的线程数组
Get() …Run Code Online (Sandbox Code Playgroud) 这有点棘手.
我正在异步上传文件到FTP.上传每个文件后,我正在检查该文件的上传操作的状态.这可以使用该请求的FtpWebResponse对象的StatusCode属性来完成.代码段如下所示.
FileStream fs = File.Open(fileName, FileMode.Open);
while ((iWork = fs.Read(buf, 0, buf.Length)) > 0)
requestStream.Write(buf, 0, iWork);
requestStream.Close();
FtpWebResponse wrRet = ((FtpWebResponse)state.Request.GetResponse());
Run Code Online (Sandbox Code Playgroud)
根据msdn,大约有37个StatusCode值.我不知道这些状态代码值中的哪一个将确保文件成功上传.我在代码中用来检查成功的其中一些是:
wrRet.StatusCode == FtpStatusCode.CommandOK
wrRet.StatusCode == FtpStatusCode.ClosingData
wrRet.StatusCode == FtpStatusCode.ClosingControl
wrRet.StatusCode == FtpStatusCode.ConnectionClosed
wrRet.StatusCode == FtpStatusCode.FileActionOK
wrRet.StatusCode == FtpStatusCode.FileStatus
Run Code Online (Sandbox Code Playgroud)
但我不知道其余的.我需要确定这些代码,因为基于上传操作的失败或成功,我还要执行其他相关操作.错误的条件会影响剩余的代码.我想到的另一个想法是简单地将上面的代码放入try..catch而不依赖于这些状态代码.有了这个,我不会依赖于状态代码,并假设任何失败将始终指向catch块.如果这是正确的方法,请告诉我.
如何删除第一个
最后
字符串的标签?示例字符串:$string = "<p>text text<br>text<p>text</p></p>";
Run Code Online (Sandbox Code Playgroud) 我正在寻找在C#中是否存在来自Java的等效类TimerTask?
这里引用了TimerTask的Java:http://download.oracle.com/javase/1.4.2/docs/api/java/util/TimerTask.html
提前致谢.
这样做的目的是我需要在C#中实现一些代码:
import java.util.Timer;
import java.util.TimerTask;
private static Timer timer = new Timer();
private TimerTask timeoutTask;
if (timeoutTime>0)
{
timeoutTask = new TimerTask() {
public void run()
{
// callActivity();
}
};
}
timer.schedule( timeoutTask, timeoutTime);
Run Code Online (Sandbox Code Playgroud)
如果你能在C#中为我提供一个等效的代码,那就太好了!提前致谢
我已经设置了一个从符合MKAnnotation协议的类派生的NSMutableArray对象.我为注释设置了设置标题和副标题,并使用以下方法成功将它们添加到MKMapView:
[[self customMapView] addAnnotations:locationArray];
Run Code Online (Sandbox Code Playgroud)
我现在要做的是动画引脚掉落,最初我以为我可以用Option1做到这一点,使用这一切都可行,但引脚不做动画下降.
// Option1
// WORKS FOR: pinColor YES, animatesDrop NO, LABEL YES
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views {
for(MKPinAnnotationView *eachView in views) {
[eachView setAnimatesDrop:YES];
[eachView setPinColor:MKPinAnnotationColorPurple];
}
}
Run Code Online (Sandbox Code Playgroud)
我的下一个猜测是尝试Option2,这似乎工作得很好,但我有两个问题.标题和副标题没有显示,我的自定义注释对象正在传入(我可以在调试器中看到它),但所包含的信息并没有传递给新的pin.其次,这会创建一组新的MKAnnotationViews,旧版本会发生什么,是否存在内存泄漏问题?
// Option2
//FOR: pinColor YES, animatesDrop YES, LABEL NO
- (MKAnnotationView *) mapView: (MKMapView *) mapView viewForAnnotation: (id<MKAnnotation>) annotation {
MKPinAnnotationView *pin = (MKPinAnnotationView *) [mapView dequeueReusableAnnotationViewWithIdentifier: @"annotation_ID"];
if (pin == nil) {
pin = [[[MKPinAnnotationView alloc] initWithAnnotation: …Run Code Online (Sandbox Code Playgroud) struts-config.xml "请求"和"会话"以外的文件的"action"元素中的"scope"属性可用的值是
多少?
<action name="loginform" path="/bkplogin" scope="?" type="org.springframework.web.struts.DelegatingActionProxy">
Run Code Online (Sandbox Code Playgroud) 我需要一个日期格式(也许是SimpleDateFormat)来解析我在Date对象上调用toString()时得到的输出的可靠性.我的德语(!)系统的输出是:"Sun Dec 12 13:45:12 CET 2010",所以它似乎并不尊重语言环境,这似乎让它变得简单.
任何人?
在这个名为Validate的着名jQuery插件中,有一个名为'onfocusout'的选项.但是我想使用另一个名为'onfocusin'的文件,但没有记录,但是代码中存在,而插件的作者在回复中引用了它.
我一直在尝试的代码:
<script type="text/javascript">
$(document).ready(function() {
$("form").validate({
onsubmit: false,
onkeyup: false,
onfocusin: true,
onfocusout: false,
rules: {
nome: {
required: true,
minlength: 5
}
}
})
})
</script>
</head>
<body>
<form action="tutorial.php" method="post" enctype="text/plain" >
<input type="text" name="nome" id="nome" />
<button type="submit">Submit</button>
</form>
</body>
Run Code Online (Sandbox Code Playgroud)
当我'关注'输入时,FireBug会显示此错误消息:
validator.settings[eventType].call is not a function [Stop on this error]
validator.settings[eventType] && v...eventType].call(validator, this[0] );
jquery...date.js (line 305)
Run Code Online (Sandbox Code Playgroud)
现在,黄金问题:如何解决这个问题?
链接:
验证插件:
bassistance.de/jquery-plugins/jquery-plugin-validation/
验证文档,选项页面:
docs.jquery.com/Plugins/Validation/validate#toptions
验证插件代码:
ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.js
验证作者对abouth onfocusin的回复:
groups.google.com/group/jquery-en/browse_thread/thread/652418e93c9618f1?pli=1
c# ×2
java ×2
.net ×1
android ×1
boost ×1
c++ ×1
cocoa-touch ×1
date-format ×1
iphone ×1
jquery ×1
jsp ×1
locking ×1
objective-c ×1
php ×1
plugins ×1
scope ×1
struts ×1
unit-testing ×1
validation ×1