我有一个用于在有序页面列表中来回导航的类.页面通常但不总是按顺序访问.有时可能会根据某些规则跳过一个或多个页面.
为了解决这个问题,我保留了两个向前和向后的堆栈,以跟踪先前在任一方向上访问过哪些页面.
就这个类的功能而言,它没有理由暴露这些堆栈.然而,当单元测试导航方法first(),next(),previous()并且last(),所有重组的堆栈,并返回相应的页面,我需要检查堆栈是在正确的"状态"的过程结束.
例如,调用first()应该清除前向堆栈,并将之前访问过的每个其他页面推送到后向堆栈.
这是否足以成为为前后堆叠提供吸气剂的理由?我犹豫不决的一个原因是,我担心这也会使他们暴露于(可能无意中)可能导致班级出现故障的外部操纵.如果客户端清除堆栈怎么办?
UPDATE
有人建议这个问题与此处发布的问题重复.我认为这两个问题并不完全相同.另一个问题讨论了重构私有方法以使其公开以便能够对其进行测试的想法.另一方面,这个问题具体是通过检查测试对象的内部状态来测试公共方法.我认为那里有一个微妙但显着的差异,并且接受的答案清楚地表明如何在不检查内部状态的情况下测试相同的公共方法.
我在IntelliJ上重新导入以前导入和删除的maven模块时遇到问题.我能够导入它们的唯一方法是重命名它们(更改文件夹名称),这是我不想做的.当我通过向导时,我收到消息:无法继续.没有找到导入.我的项目在Window中显示为灰色,表示选择要导入的Maven项目.我猜测IntelliJ会在某处缓存导入模块的名称,并且在删除模块时不会清除它们.有人能提供帮助吗?
我有一个包含 VB.NET 项目和 C# 项目的解决方案。VB.NET 项目是主要项目。它引用了用于用户管理服务的 C# 项目。两者都连接到同一个数据库。该数据库的连接字符串存储在 VB.NET 项目的 app.config 文件中。它还包含其他用户和应用程序级别的设置。我可以使用以下代码行从 C# 内部的配置读取连接字符串:
String connectionString = ConfigurationManager.ConnectionStrings["Kais2012.My.MySettings.ConnectionString"].ConnectionString;
Run Code Online (Sandbox Code Playgroud)
配置文件中包含的其他应用程序级别属性之一称为“TeamId”。我编写了以下代码来从 C# 读取它。
String teamId = ConfigurationManager.AppSettings["Kais2012.My.MySettings.TeamId"];
Run Code Online (Sandbox Code Playgroud)
这不起作用,我不明白为什么。任何帮助将不胜感激。谢谢。
它不起作用的方式是 teamId 返回 null。这是 app.config 文件的内容。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="Kais2012.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="Kais2012.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" …Run Code Online (Sandbox Code Playgroud)