单元测试:自定义定时器断言
Unit Test : Custom Timer Assert
我想为我的单元测试创建一个自定义断言,它将测量两个 c# 函数的执行时间并进行比较。
我写了下面的代码,但是有更好的方法吗?
public static class AssertExtensions
{
public static void MoreSlowThan(Action slowFunction, Action fastFunction)
{
var watch = Stopwatch.StartNew();
slowFunction();
watch.Stop();
var watchBis = Stopwatch.StartNew();
fastFunction();
watchBis.Stop();
Assert.IsTrue(watch.ElapsedMilliseconds >= watchBis.ElapsedMilliseconds);
}
}
呼叫者:
AssertExtensions.MoreSlowThan(() => MyFunction(), () => MyCachedFunction());
(目标是比较一个函数的执行时间和缓存中同一个函数的执行时间)
我发现最好的方法是使用 MSTest-2 重构它,例如:
public static void IsFaster(this Assert assert, Action expectedFastAction, Action actualSlowAction)
{
var slowStopwatch = Stopwatch.StartNew();
actualSlowAction();
slowStopwatch.Stop();
var fastStopwatch = Stopwatch.StartNew();
expectedFastAction();
fastStopwatch.Stop();
Assert.IsTrue(slowStopwatch.Elapsed >= fastStopwatch.Elapsed, string.Format("First function would be faster than the second. Fast function elapsed time : {0}. Slow function elapsed time : {1}", fastStopwatch.Elapsed, slowStopwatch.Elapsed));
}
并用 :
调用它
Assert.That.IsSlower(() => MyCachedFunction(), () => MyFunction());
谁有更好的方法
我想为我的单元测试创建一个自定义断言,它将测量两个 c# 函数的执行时间并进行比较。 我写了下面的代码,但是有更好的方法吗?
public static class AssertExtensions
{
public static void MoreSlowThan(Action slowFunction, Action fastFunction)
{
var watch = Stopwatch.StartNew();
slowFunction();
watch.Stop();
var watchBis = Stopwatch.StartNew();
fastFunction();
watchBis.Stop();
Assert.IsTrue(watch.ElapsedMilliseconds >= watchBis.ElapsedMilliseconds);
}
}
呼叫者:
AssertExtensions.MoreSlowThan(() => MyFunction(), () => MyCachedFunction());
(目标是比较一个函数的执行时间和缓存中同一个函数的执行时间)
我发现最好的方法是使用 MSTest-2 重构它,例如:
public static void IsFaster(this Assert assert, Action expectedFastAction, Action actualSlowAction)
{
var slowStopwatch = Stopwatch.StartNew();
actualSlowAction();
slowStopwatch.Stop();
var fastStopwatch = Stopwatch.StartNew();
expectedFastAction();
fastStopwatch.Stop();
Assert.IsTrue(slowStopwatch.Elapsed >= fastStopwatch.Elapsed, string.Format("First function would be faster than the second. Fast function elapsed time : {0}. Slow function elapsed time : {1}", fastStopwatch.Elapsed, slowStopwatch.Elapsed));
}
并用 :
调用它Assert.That.IsSlower(() => MyCachedFunction(), () => MyFunction());
谁有更好的方法