小编Vaj*_*jda的帖子

Specflow的[AfterScenario]

我已经在我的stepdefinition类中定义了[AfterScenario]绑定,并且具有将在每个场景之后执行的方法,但是由于某些原因这不起作用.在每个场景之后都没有调用我的方法,因此在经过一些测试之后,excel仍然保持打开状态......对于一些不成功的测试,也没有日志.为什么?你有什么想法或建议吗?

这是我的方法:

[AfterScenario]        
public void AfterScenario()
{
    if (TestContext.CurrentContext.Result.State != TestState.Success) ErrorLog();
    excelDriver.Stop();
}
Run Code Online (Sandbox Code Playgroud)

specflow

20
推荐指数
1
解决办法
2万
查看次数

不同项目中的Specflow步骤定义类

是否有可能有两个步骤定义类,第一个在一个命名空间/项目中,第二个在另一个中?我喜欢这个:

我运行的测试项目:namespace:ABZ.ExcelTest类名:ABZ.ExcelTest.ExcelStepDefinition

我的另一个项目是Logic for testing:namespace:ABZ.OfficeAddInTestLogic类名:ABZ.OfficeAddInTestLogic.StepDefinition

我的两个类都有[Binding]属性但是这个不在测试项目中的属性(ABZ.OfficeAddInTestLogic.StepDefinition)找不到,我得到NUnit错误:

找不到该步骤的匹配步骤定义.使用以下代码创建一个:...

是否有可能在不同的项目中有两个步骤定义类?

specflow

12
推荐指数
1
解决办法
4978
查看次数

使用Moq在mock对象中定义方法实现

情况就是这样.我有异步调用所以我需要为此进行Mid tier才能测试它.

request.BeginGetResponse(new AsyncCallback(LoginCallback), requestState);
Run Code Online (Sandbox Code Playgroud)

因此,为了能够在没有实际请求的情况下测试它,我创建了可以模拟的界面.

public interface IRequestSender
    {
        void Send(HttpWebRequest request, AsyncCallback internalCallback, object requestState);
    }
Run Code Online (Sandbox Code Playgroud)

然后在实现中我可以使用上面的那个调用,我可以提供一些模拟类来调用我的回调方法,无论请求是否有效.我的模拟类看起来像这样.

public class RequestSenderMock : IRequestSender
    {
        public void Send(HttpWebRequest request, AsyncCallback internalCallback, object requestState)
        {
            var result = new Mock<IAsyncResult>();
            result.Setup(x => x.AsyncState).Returns(requestState);
            internalCallback(result.Object);
        }
    }
Run Code Online (Sandbox Code Playgroud)

我现在可以在单元测试中轻松创建模拟对象并使用它.但是当我创造

var sender = new Mock<RequestSenderMock>();
Run Code Online (Sandbox Code Playgroud)

我无法验证此对象的通话计数.

sender.Verify(x => x.Send(It.IsAny<HttpWebRequest>(), It.IsAny<AsyncCallback>(), It.IsAny<object>()), Times.Once());
Run Code Online (Sandbox Code Playgroud)

它说我的方法需要是虚拟的.有没有办法在不使我的方法虚拟的情况下做到这一点?如果我能在某种程度上指定使用接口时的方法实现,那将是最好的.

var sender = new Mock<IRequestSender>();
Run Code Online (Sandbox Code Playgroud)

并以某种方式使用Setup方法或其他一些方法在这个模拟对象上进行实现.比我简单地删除我的模拟课程.这可能吗?你有什么建议?

c# moq mocking

6
推荐指数
1
解决办法
7476
查看次数

从Entity Framework中的导航属性中删除所有记录

我在Program和Student表之间有1:N关系,EF转换为导航属性.现在我要删除此导航学生中的所有记录.我开始是这样的:

foreach(Student student in program.Students)
program.Students.Remove(student);
Run Code Online (Sandbox Code Playgroud)

但我对此有点怀疑.

比我尝试过这样:

while (program.Students.Count > 0)
    program.Students.Remove(program.Students.ToList()[0]);
Run Code Online (Sandbox Code Playgroud)

但这似乎也很奇怪.

是否有一些更简单的方法可以做到这一点,或者不是哪种方式最好?

c# entity-framework-4

5
推荐指数
2
解决办法
1万
查看次数

将NameValueCollection发送到http请求C#

我有这种情况.我们正在使用一些方法进行登录,但是该方法在一些更高的抽象级别上,因此它只有像username和password这样的参数,并且使用这个参数进行一些Name值集合,而不是传递给某个请求构建器.注入此请求构建器以便我可以更改它的实现.现在我们正在使用POST请求,但将来我们可能会使用XML或JSON,因此只需切换注入接口的实现.

问题是,我不能罚款任何库,这将使我的System.Net.HttpWebRequest超出此名称值集合.我需要像这样的原型方法:

WebRequest / HttpWebRequest  CreateRequest(Uri / string, nameValueCollection);
Run Code Online (Sandbox Code Playgroud)

或者,如果没有类似的东西,那么完成所有工作(发送请求,接收响应和解析它们)的库也会很好.但它需要是异步的.

提前致谢.

c# httpwebrequest

5
推荐指数
1
解决办法
1万
查看次数

没有控制框的 Windows 窗体对话框图标

我想知道是否有办法在禁用控制框、最小化框和最大化框的情况下在自定义对话框的左上角显示图标?单击图标时我不需要任何功能(关于、关闭、移动等)。我只是想要它看起来更好看。

.net c# winforms

5
推荐指数
1
解决办法
9291
查看次数

SpecFlow自定义工具"SpecFlowSingleFileGenerator"

我发现这个自定义工具用于从SpecFlow的.feature文件生成.cs文件.有没有办法在VS之外使用这个工具?在使用NAnt构建项目时,我想从控制台调用此工具以获取特定的.feature文件.

问候,

瓦伊达弗拉基米尔

specflow

4
推荐指数
1
解决办法
9483
查看次数

.NET配置类保存问题

当我更改一些配置属性并调用Save()方法到配置对象,然后更改一些配置属性并再次调用Save()时,我得到异常,因为配置已更改.

异常文本:"配置文件已被其他程序更改."

因此,如果用户在运行时更改某些内容并执行保存并再次更改某些内容并保存我的应用程序将抛出异​​常.我对吗?

我不应该多次保存配置吗?

编辑:提供代码示例.

ExeConfigurationFileMap map = new ExeConfigurationFileMap();
            map.LocalUserConfigFilename = UserConfig;
            map.RoamingUserConfigFilename = RoamingConfig;
            map.ExeConfigFilename = AppConfig;

            System.Configuration.Configuration combinedConfigFile = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.PerUserRoamingAndLocal);

            AddinConfiguration combinedConfig = (AddinConfiguration)combinedConfigFile.GetSection(sectionName);
            combinedConfig.Config = combinedConfigFile;
            return combinedConfig;
Run Code Online (Sandbox Code Playgroud)

我已将属性Config注入我的部分,因此我可以使用它来保存这样的配置.

mySection.Config.Save();
Run Code Online (Sandbox Code Playgroud)

.net c# app-config

4
推荐指数
1
解决办法
4206
查看次数

按名称访问excel单元格

我正在尝试将excel的单元名称设置为某个自定义名称,然后通过其名称访问该单元格.是否有一些开箱即用的API调用来执行此操作,或者如果在命名单元格的情况下访问单元格和工作表以及单元格地址(即C2)时,如果我有工作表和单元名称的信息,我应该如何执行此操作.

另外要问一下,有没有办法获取绑定到该特定单元格的格式信息?(即,当我按名称访问单元格时,我想返回单元格值和此单元格的一些格式化属性,如果单元格是数字或文本,是否突出显示等等...)

问候,

弗拉基米尔·瓦伊达

c# excel office-interop

4
推荐指数
1
解决办法
7389
查看次数

用于在AssemblyInfo.cs中设置自定义属性的MSBuild任务

是否有用于在AssemblyInfo.cs中设置自定义属性的MSBuild任务?我找到了AssemblyInfo任务,但它似乎无法设置自定义属性,只能预定义属性.我想设置我已添加到此文件中的3个自定义属性.

有什么建议如何解决这个问题?

c# msbuild-task msbuildcommunitytasks pre-build-event

4
推荐指数
1
解决办法
2622
查看次数