我想在进行单元测试时记录所有断言,而又不会过于侵入代码。 理想情况下,我希望有一种方法可以挂接任何类似Assert.IsTrue的测试断言,如果失败,则将该断言和消息记录到我的应用程序日志中(使用log4net)。
日志记录在并行测试方案中特别有用。除非我为每个测试都使用try catch抛出异常,否则我看不到这样做的方法-代码过多吗?
我确信很多人也有类似的要求。 我正在使用最新的Visual Studio 17和Resharper MSTestV2测试框架和适配器v1.4.0。 有任何想法吗?我想念明显的东西吗?
预先感谢 亲切的问候 特里
答案 0 :(得分:0)
可能有一些库可以直接使用记录器进行断言,但是如果您只是想自己做,则可以使用将操作接受为参数。此操作可以接受任何断言方法。
类似这样的东西:
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
AssertLogger.AssertWithLogs(() => Assert.IsTrue(false));
}
[TestMethod]
public void TestMethod2()
{
AssertLogger.AssertWithLogs(() => Assert.IsTrue(false));
}
}
public static class AssertLogger
{
public static void AssertWithLogs(Action assert)
{
try {
assert();
} catch (Exception ex) {
//Use log4net or other loggers
Console.WriteLine(ex.Message);
throw ex;
}
}
}
希望有帮助。