我目前有一个非常奇怪的问题,我似乎无法弄清楚如何解决它.
我有一个相当复杂的类型,我正在尝试使用XmlSerializer类进行序列化.这实际上运行正常,类型序列化正确,但似乎需要很长时间这样做; 大约5秒钟,具体取决于对象中的数据.
经过一些分析后,我已经缩小了问题 - 奇怪的是 - 在调用XmlSerializer.Serialize时指定一个XmlRootAttribute.我这样做是为了将从ArrayOf序列化的集合的名称更改为更有意义的东西.一旦我删除参数,操作几乎是即时的!
任何想法或建议都会非常好,因为我完全被这个问题所困扰!
我有一个问题单元测试一个类,当一个线程启动并完成时会触发事件.违规来源的简化版本如下:
public class ThreadRunner
{
private bool keepRunning;
public event EventHandler Started;
public event EventHandler Finished;
public void StartThreadTest()
{
this.keepRunning = true;
var thread = new Thread(new ThreadStart(this.LongRunningMethod));
thread.Start();
}
public void FinishThreadTest()
{
this.keepRunning = false;
}
protected void OnStarted()
{
if (this.Started != null)
this.Started(this, new EventArgs());
}
protected void OnFinished()
{
if (this.Finished != null)
this.Finished(this, new EventArgs());
}
private void LongRunningMethod()
{
this.OnStarted();
while (this.keepRunning)
Thread.Sleep(100);
this.OnFinished();
}
}
Run Code Online (Sandbox Code Playgroud)
然后我有一个测试来检查Finished事件在LongRunningMethod完成之后如下所示:
[TestClass] …Run Code Online (Sandbox Code Playgroud) 我目前正在开发一个大型BPM项目,该项目使用名为Process 360的Global 360 BPM工具集.只是为了给出一些背景知识.这个产品就像很多其他BPM解决方案一样,你设计了多个"流程图",它们定义了你试图建模的特定业务流程的流程,每个流程图由连接在一起的多个任务节点组成,它们执行特定的功能(调用网络服务等).
目前,我们在版本的QA阶段遇到了一些相当严重的问题,因为工具集没有提供任何方法来自动测试流程图路由.因此,当开发大型复杂流程并将其移交给我们的测试团队时,通常会出现大量问题.虽然显然你期望从质量保证中得出一些问题,但如果我们有一些我们可以用来构建的自动化测试框架,我无法感觉到在开发过程中会发现很多错误等等.一组单元测试,证明了过程图中的各种路径.
目前,唯一真正的开发测试更类似于开发人员执行的功能测试,每个测试用例都记录为一组手动步骤.这种方法的问题在于开发人员手动运行非常耗时,因此,也相对容易出错.也; 因为我们的计划通常非常紧张,所以通常不会经常执行测试以及早发现问题.
正如我前面提到的; 当前工具集没有提供执行此类自动化测试的方法.这让我想到了为什么?作为整个BPM场景的新手,我的假设是这只是产品中缺乏的一个功能,但我也想知道"单元测试"是否传统上不是在BPM世界中完成的?也许它只是不适合这种工作?
我有兴趣知道是否有其他人遇到过这类问题,还有什么 - 如果有的话 - 可以做些什么来改进.