我在我的C#中使用了一些COM库,它绑定到特定的硬件,没有它就无法工作.在开发/测试计算机上,我没有那个硬件.使用库的方法如下所示:
using HWSysManagerLib;
bool ProcessBias(HWSysManager systemManager, string hwPath)
{
int handle = systemManager.OpenConfiguration(hwPath);
...
// some magic goes here
// return result
}
Run Code Online (Sandbox Code Playgroud)
问题是,我可以模拟HWSysManager测试方法以及如何?只有很少的方法HWSysManager,模拟它们的测试功能不会有问题.如果可能的话,一个很小的例子就是如何嘲笑它.
我以两种不同的方式运行Parallel.For循环:
不写任何async/await但只是调用Task ReadSensorAsync(int):
var watch = System.Diagnostics.Stopwatch.StartNew();
Parallel.For(3, 38,
index => {
ReadSensorsAsync(index);
});
watch.Stop();
Console.WriteLine("Parallel finished in {0} ms", watch.ElapsedMilliseconds);
Run Code Online (Sandbox Code Playgroud)
时间显示 1ms
跑步 async/await
var watch = System.Diagnostics.Stopwatch.StartNew();
Parallel.For(3, 38,
async index => {
await ReadSensorsAsync(index);
});
watch.Stop();
Console.WriteLine("Parallel finished in {0} ms", watch.ElapsedMilliseconds);
Run Code Online (Sandbox Code Playgroud)
这表明2-5ms.
问题是为什么存在这种差异以及使用哪种方式.
寻找一些[免费软件/开源]工具,以便在win32平台上轻松分析一个大的PHP项目.需要找出最耗时的代码部分.循环时,很难手动为每个功能设置定时功能......
- (void) swapController:(MyViewController*)controller1
with:(MyViewController*)controller2
{
MyViewController *swap = controller2;
controller2 = controller1;
controller1 = swap;
}
Run Code Online (Sandbox Code Playgroud)
看起来这不起作用,因为我没有传递引用.怎么办呢?
我试图枚举实际上可枚举的Object,但类型存储在Type变量中
public Type MyListType { get; set; }
public Object MyList { get; set; }
...
foreach (var item in Convert.ChangeType(MyList, MyListType))
{
...
}
Run Code Online (Sandbox Code Playgroud)
这显然会产生错误,因为ChangeType仍然返回Object.如何将MyList转换为可枚举类型,尤其是MyListType?
更新:
更清楚的是,Object是BindingList<T>type,其中T驻留在MyListType中.
testExceptions 是字典.
var testConfigurations = cells.SelectMany(x => x.TestConfigurations).Where(
y => y.ID == testId &&
!testExceptions[index].ContainsKey(y.Cell) &&
!testExceptions[index][y.Cell].Contains(y.ID)
).ToList();
Run Code Online (Sandbox Code Playgroud)
!testExceptions[index][y.Cell].Contains(y.ID)在testExceptions不包含密钥时给我一个例外y.Cell.但是因为我正在检查,ContainsKey我预计它不会评估最后的情况.有没有办法避免异常而不使用长if/else语句?
c# ×4
asynchronous ×1
mocking ×1
nunit ×1
objective-c ×1
php ×1
profiler ×1
unit-testing ×1
winforms ×1