C#学习日记12
1.Fact注解
解析:
2.dotnet test
解析:dotnet test --filter “Category=New|Category=Name”
3.忽略测试
解析:[Fact(Skip=“不需要跑这个测试”)]
4.自定义测试输出信息ITestOutputHelper
解析:构造函数依赖注入:
private readonly ITestOutputHelper _output;
public PatientShould(ITestOutputHelper output)
{
_output = output;
}
[Fact]
[Trait("Category", "New")]
public void BeNewWhenCreated()
{
_output.WriteLine("第一个测试");
}
5.分组测试
解析:[Trait(“Category”, “New”)]
6.C#中的各种注释
解析:
[1]<c>:把行中的文本标记为代码,比如<c>inti=10;</c>
[2]<code>:把多行标记为代码
[3]<example>:标记为一个代码示例
[4]<exception>:说明一个异常类[编译器要验证其语法]
[5]<include>:包含其他文档说明文件的注释[编译器要验证其语法]
[6]<list>:把列表插入到文档说明中
[7]<param>:标记方法的参数[编译器要验证其语法]
[8]<paramref>:表示一个单词是方法的参数[编译器要验证其语法]
[9]<permission>:说明对成员的访问[编译器要验证其语法]
[10]<remarks>:给成员添加描述
[11]<returns>:说明方法的返回值
[12]<see>:提供对另一个参数的交叉引用[编译器要验证其语法]
[13]<seealso>:提供描述中的参见部分[编译器要验证其语法]
[14]<summary>:提供类型或成员的简短小结
[15]<value>:描述属性
7.Fluent Assertions
解析:Fluent Assertions是.NET平台下的一组扩展方法,用于单元测试中的断言,它使单元测试中的断言看起来更自然流畅。https://github.com/fluentassertions/fluentassertions
8.Log4Net
解析:Logger发出记录信息,Appender接到信息,根据内部的Layout配置对记录信息格式化,然后根据Filter对记录信息进行筛选,最后将其记录到指定介质中。
9.AssemblyInfo.cs文件
解析:log4net会自动寻找配置文件App.config或Web.config从而获得并加载其中的配置信息:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension="config", Watch = true)]
说明:winform程序ConfigFile为App.config。相当于读取配置文件中的内容并初始化:log4net.Config.XmlConfigurator.Configure();
10.Log4Net输出方式
解析:
[1]AdoNetAppender:将日志记录到数据库中。可以采用SQL和存储过程两种方式。
[2]AnsiColorTerminalAppender:在ANSI窗口终端写下高亮度的日志事件。
[3]AspNetTraceAppender:能用asp.net中Trace的方式查看记录的日志。
[4]BufferingForwardingAppender:在输出到子Appenders之前先缓存日志事件。
[5]ConsoleAppender:将日志输出到控制台。
[6]EventLogAppender:将日志写到Windows Event Log。
[7]FileAppender:将日志写到文件中。
[8]LocalSyslogAppender:将日志写到local syslog service[仅用于UNIX环境下]
[9]MemoryAppender:将日志存到内存缓冲区。
[10]NetSendAppender:将日志输出到Windows Messenger service,这些日志信息将在用户终端的对话框中显示。
[11]RemoteSyslogAppender:通过UDP网络协议将日志写到Remote syslog service。
[12]RemotingAppender:通过.NET Remoting将日志写到远程接收端。
[13]RollingFileAppender:将日志以回滚文件的形式写到文件中。
[14]SmtpAppender:将日志写到邮件中。
[15]TraceAppender:将日志写到.NET trace系统。
[16]UdpAppender:将日志connectionless UDP datagrams的形式送到远程宿主或以UdpClient的形式广播。
11.定义输出到文件中
解析:
<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
<!--定义文件存放位置-->
<file value="C:\log.txt" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd-HH:mm:ss" />
<layout type="log4net.Layout.PatternLayout">
<!--输出格式-->
<!--样例:2008-03-26 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info-->
<conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline" />
</layout>
</appender>
12.输出格式
解析:
[1]%m(message):输出的日志消息,比如ILog.Debug(…)输出的一条消息
[2]%n(newline):换行
[3]%d(datetime):输出当前语句运行的时刻
[4]%r(runtime):输出程序从运行到执行到当前语句时消耗的毫秒数
[5]%t(threadid):当前语句所在的线程ID
[6]%p(priority):日志的当前优先级别,即DEBUG、INFO、WARN…等
[7]%c(class):当前日志对象的名称
[8]%f(file):输出语句所在的文件名
[9]%l(line):输出语句所在的行号
[10]%数字:表示该项的最小长度,如果不够,则用空格填充,比如%-5level表示level的最小宽度是5个字符,如果实际长度不够5个字符则以空格填充
13.定义输出到控制台命令行中
解析:
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
14.日志类别
解析:FATAL[致命错误]、ERROR[一般错误]、WARN[警告]、INFO[一般信息]、DEBUG[调试信息]。
15.创建日志记录组件实例
解析:
ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
16.日志信息格式
解析:
17.日志级别
解析:
[1]TRACE:记录一些对程序员调试问题有帮助的信息,其中可能包含一些敏感信息,所以应该避免在生产环境中启用Trace日志。
[2]DEBUG:记录一些在开发和调试阶段有用的短时变量[Short-term usefulness],所以除非为了临时排除生产环境的故障,开发人员应该尽量避免在生产环境中启用Debug日志。
[3]INFO:信息日志。记录应用程序的一些流程,比如记录当前api请求的url、请求参数等。
[4]WARN:警告日志。记录应用程序中发生的不正常或者未预期的事件信息。这些信息中可能包含错误消息或者错误产生的条件,比如文件未找到、用户不存在。
[5]ERROR:错误日志。记录应用程序中某个操作产生的错误和异常信息,比如对空值进行操作等。
[6]FATAL:毁灭性错误。记录一些需要立刻修复的问题。比如数据丢失、磁盘空间不足。
18.log4net.Layout.PatternLayout
解析:
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%n==========
%n【日志级别】%-5level
%n【记录时间】%date
%n【线程编号】[%thread]
%n【执行时间】[%r]毫秒
%n【出错文件】%F
%n【出错行号】%L
%n【出错的类】%logger 属性[%property{NDC}]
%n【错误描述】%message
%n【错误详情】%newline"/>
</layout>
19.MS SQL Server日志表定义
解析:
CREATE TABLE [dbo].[Log] (
[Id] [int] IDENTITY (1, 1) NOT NULL,
[Date] [datetime] NOT NULL,
[Thread] [varchar] (255) NOT NULL,
[Level] [varchar] (50) NOT NULL,
[Logger] [varchar] (255) NOT NULL,
[Message] [varchar] (4000) NOT NULL,
[Exception] [varchar] (2000) NULL
)
20.日志格式
解析:%timestamp [%thread] %-5level %logger{2} %ndc - %message%newline:
21.Log4Net命名空间
解析:
22.HslCommunication
解析:一个工业物联网底层架构框架,专注于底层技术通信和跨平台、跨语言通信功能,实现多种主流PLC数据读写,实现各种协议的Modbus读写等,支持工业上层的快速建设。计算机软件、组态软件、SCADA软件、工厂MES系统,帮助企业工业4.0起飞,实现智能制造、智能工厂的目标。主PLC包括西门子、三菱、欧姆龙、松下、Modbus、AB-PLC、Redis。
说明:Install-Package HslCommunication。
23.工业软件
解析:
[1]工业软件,上位机软件,SCADA软件,三菱PLC,数据追述系统,MES软件。
[2]C#和三菱PLC通讯,C#和西门子通讯,欧姆龙,松下,AB PLC。
[3]C#和PLC通信。
24.STM32
解析:STM32系列专为要求高性能、低成本、低功耗的嵌入式应用设计的ARM Cortex-M0,M0+,M3,M4和M7内核。
25.电子秤置零
解析:电子秤置零是针对输入价格起作用的,当输入一个价格后,想输入另一个价格时,按置零键使价格归零,然后输入另一个价格。
参考文献:
[1]单元测试-xUnit总结:https://blog.csdn.net/xingkongtianyuzhao/article/details/104526999/
[2]使用xUnit.NET对.NET Core项目进行单元测试:https://www.bilibili.com/video/BV1Bb411V7kk?p=4
[3]log4net:http://logging.apache.org/log4net/
[4]https://github.com/apache/logging-log4net/
[5]log4net Namespace:http://logging.apache.org/log4net/release/sdk/index.html