渭南市住房和城乡建设部网站,手机端网站开发技术,我们做的网站是优化型结构,网站申请日志记录是一种流行的解决方案#xff0c;用于显示软件在运行时的运行状况。 但是#xff0c;当我们使用jUnit / TestNG对应用程序进行单元测试时#xff0c;日志记录会怎样#xff1f; 在自动化测试执行期间#xff0c;我们通常不希望看到日志记录消息#xff0c;因为… 日志记录是一种流行的解决方案用于显示软件在运行时的运行状况。 但是当我们使用jUnit / TestNG对应用程序进行单元测试时日志记录会怎样 在自动化测试执行期间我们通常不希望看到日志记录消息因为我们的主要兴趣是测试结果。 能够在标准的自动测试过程中禁用日志记录消息将是很好的。 相反在某些情况下日志记录消息在测试时可能有用。 一个典型的例子是当我们为某些遗留代码编写缺少的测试代码时在适当覆盖测试范围之前我们不想碰。 在这种情况下在控制台上记录消息可以帮助我们理解代码及其工作方式。 因此我们可以确定三个用例 运行模式 在执行应用程序时启用日志并根据应用程序的要求进行配置 测试执行模式 当一起执行自动测试时应禁用日志记录消息 测试创建模式 当我们创建新测试时日志消息很有用但最好将它们放在控制台中 让我们看一个基于Maven和SLF4J的示例 SLF4J是流行的日志记录外观。 完整的项目可以在这里找到。 项目pom.xml中的典型SLF4J配置如下 dependencygroupIdorg.slf4j/groupIdartifactIdslf4j-api/artifactIdversion${slf4j.version}/version/dependencydependencygroupIdorg.slf4j/groupIdartifactIdslf4j-log4j12/artifactIdversion${slf4j.version}/versionscoperuntime/scope/dependency 所述slf4-api依赖是主要的SLF4J库而第二个 slf4j-log4j12 所引用的可能记录的发动机之一LOG4J 其可工作SLF4J 下方 。 这是运行模式配置。 在此示例中项目资源将包含一个LOG4J属性文件该文件指示LOG4J应该记录什么如何记录以及在哪里记录。 当我们使用不同的日志记录引擎如java.util.loggingJDK和Logback时也会发生相同的情况。 有关更多详细信息请参见Slf4J手册 。 在测试执行模式下我们不想记录日志因此我们可以简单地添加以下范围测试依赖项 dependencygroupIdorg.slf4j/groupIdartifactIdslf4j-nop/artifactIdversion${slf4j.version}/versionscopetest/scope/dependency NOP记录器slf4j-nop只是丢弃所有记录。 重要提示 pom.xml的依赖关系顺序很重要。 将slf4j-nop依赖项放在slf4-api依赖项之后这样就可以在测试期间使用它即使该依赖项中还有另一个日志记录引擎。 当pom.xml有多个日志记录引擎依赖项时无论如何SLF4J都会显示如下消息 SLF4J: Class path contains multiple SLF4J bindings.SLF4J: Found binding in [jar:file:.m2/repository/org/slf4j/slf4j-nop/1.7.12/slf4j-nop-1.7.12.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J: Found binding in [jar:file:.m2/repository/org/slf4j/slf4j-log4j12/1.7.12/slf4j-log4j12-1.7.12.jar!/org/slf4j/impl/StaticLoggerBinder.class]SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.SLF4J: Actual binding is of type [org.slf4j.helpers.NOPLoggerFactory] 总而言之下面是一个完整的配置示例 dependencygroupIdorg.slf4j/groupIdartifactIdslf4j-api/artifactIdversion${slf4j.version}/version/dependencydependencygroupIdorg.slf4j/groupIdartifactIdslf4j-nop/artifactIdversion${slf4j.version}/versionscopetest/scope/dependencydependencygroupIdorg.slf4j/groupIdartifactIdslf4j-log4j12/artifactIdversion${slf4j.version}/versionscoperuntime/scope/dependency 同样应该调整最后一个依赖项以匹配所需的日志记录引擎。 如前所述创建新测试时日志记录很有用。 在这种情况下 测试创建模式 我们可以用slf4j-simple依赖项临时替换slf4j-nop 这将启用SLF4J Simple logger 。 现在在执行测试期间日志消息将作为System.err消息显示在控制台窗口中。 不需要配置文件。 默认情况下简单记录器不会记录DEBUG消息。 标准日志记录级别为INFO。 您可以使用此处记录的系统变量来自定义Simple logger行为。 定义简单记录器配置的明智方法是使用[Surefire插件配置部分] http://maven.apache.org/surefire/maven-surefire-plugin/examples/system-properties.html buildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-surefire-plugin/artifactIdversion2.18.1/versionconfigurationsystemPropertyVariablesorg.slf4j.simpleLogger.defaultLogLevelDEBUG/org.slf4j.simpleLogger.defaultLogLevelorg.slf4j.simpleLogger.showDateTimetrue/org.slf4j.simpleLogger.showDateTime/systemPropertyVariables/configuration/plugin/plugins/build 在systemPropertyVariables部分中我们可以使用Simple logger变量名称创建标签。 在上面的示例中启用了DEBUG和时间戳记录。 翻译自: https://www.javacodegeeks.com/2015/11/tutorial-logging-tests.html