小编Sté*_*écy的帖子

使用FakeItEasy,如何在假冒的属性上设置值?

使用FakeItEasy,我试图捕获假对象上的属性值的设置:

首先是界面:

interface ISomeInterface
{
    int MyProperty {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

然后是单元测试的一个片段:

var myObject = A.Fake<ISomeInterface>();

int saved = 0;
A.CallTo (() => myObject.MyProperty).Invokes (x => saved = ?????);

SomeMethod (myObject);
Assert.That (saved, Is.EqualTo (100));
Run Code Online (Sandbox Code Playgroud)

而且有

void SomeMethod (ISomeInterface intf)
{
    intf.MyProperty = 100;
}
Run Code Online (Sandbox Code Playgroud)

我不知道要替换什么?????

c# mocking fakeiteasy

13
推荐指数
1
解决办法
7001
查看次数

如何使用自动化测试的虚拟机?

我正在尝试使用虚拟机环境为我们的应用程序设置自动化测试.

我想要的是类似下面的场景:

  1. 自动触发构建服务器以启动应用程序的自动测试
  2. 然后运行"构建"脚本,其中包括:
    1. 将应用程序文件和测试脚本复制到VM可访问的位置
    2. 启动VM
      1. 在VM中,特殊应用程序在共享文件夹中查找并启动测试脚本
      2. 测试脚本完成其工作,结果输出到共享文件夹
      3. 测试脚本结束
      4. 然后特殊应用程序删除测试脚本
      5. 特殊应用程序以某种方式让VM管理器关闭VM并恢复到之前的快照
    3. 当VM退出时,处理结果并发送到构建服务器.

如果重要的话,我正在使用TeamCity.对于虚拟机,我们使用VirtualBox,但如果需要,我们可以对任何其他虚拟机开放.

是否有任何应用程序/套件可以管理此方案?

如果没有,那么我会自己编码,应该很容易,但唯一的部分我不确定是虚拟机的处理.

我需要做的是让VM在测试后自行关闭并恢复到之前的快照,因为我希望它在下一个测试中处于已知状态.

有什么指针吗?

virtualization teamcity automated-tests

12
推荐指数
2
解决办法
6859
查看次数

是否可以将Protobuf-Net与没有无参数构造函数的类一起使用?

使用Protobuf-Net,我发现如果没有无参数构造函数或者我可能会遗漏某些东西,似乎不可能反序列化一个类?

我不想要一些带有无参数构造函数的类.我可以使用某种属性或其他技术吗?

.net c# serialization protocol-buffers protobuf-net

10
推荐指数
1
解决办法
4452
查看次数

在C#中,进行构造函数链接的最佳/可接受方式是什么?

鉴于以下课程:

public class MyClass
{
    private string _param;

    public MyClass ()
    {
        _param = string.Empty;
    }

    public MyClass (string param)
    {
        _param = param;
    }
}
Run Code Online (Sandbox Code Playgroud)

我在两种链接这些构造函数的方法之间分裂:

第一个:

public MyClass () : this (string.Empty)
{
}

public MyClass (string param)
{
    _param = param;
}
Run Code Online (Sandbox Code Playgroud)

第二个:

public MyClass ()
{
    _param = string.Empty;
}

public MyClass (string param) : this ()
{
    _param = param;
}
Run Code Online (Sandbox Code Playgroud)

那么,从无参数构造函数链接到其他方式更好吗?

c# constructor chaining

8
推荐指数
1
解决办法
399
查看次数

使用ProtoBuf-Net,如何(反)序列化多维数组?

由于ProtoBuf-Net不支持序列化/反序列化多维数组,我将如何管理我的数组呢?

.net arrays protobuf-net multidimensional-array

8
推荐指数
1
解决办法
2937
查看次数

IEditableObject实现

我一直在寻找实现一个实现IEditableObject的泛型类,以便我的一些ViewModel继承,以支持取消对ViewModel中属性的编辑.这主要用于WPF中具有"确定"和"取消"按钮的模式对话框.

我在网上找到了以下实现:

这对我来说似乎过于复杂,但我不确定我是否遗漏了他们提供的一些功能.对于一个他们不支持深拷贝,所以在我的世界中我们可以使用MemberwiseClone来执行浅拷贝.就像是:

private Item backupCopy;
private bool inEdit;

public void BeginEdit()
{
    if (inEdit) return;
    inEdit = true;
    backupCopy = this.MemberwiseClone() as Item;
}

public void CancelEdit()
{
    if (!inEdit) return;
    inEdit = false;
    this.Name = backupCopy.Name;
}

public void EndEdit()
{
    if (!inEdit) return;
    inEdit = false;
    backupCopy = null;
}
Run Code Online (Sandbox Code Playgroud)

这个例子当然应该是ViewModel继承的通用抽象基类,但你明白了......

这有什么区别?除了不支持深拷贝之外,我的方法有哪些缺点?你如何修改它以支持深层复制(不确定是否有必要)?

更新:

发现这篇文章显示了比使用反射更好的实现.比我链接的其他两篇文章简单得多:

我们如何扩展它以支持深层复制?

c# wpf

8
推荐指数
1
解决办法
9026
查看次数

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

从流中加载XmlDocument时缺少根元素

我有以下代码:

var XmlDoc = new XmlDocument();
Console.WriteLine();
Console.WriteLine(response.ReadToEnd());
Console.WriteLine();

// setup the XML namespace manager
XmlNamespaceManager mgr = new XmlNamespaceManager(XmlDoc.NameTable);
// add the relevant namespaces to the XML namespace manager
mgr.AddNamespace("ns", "http://triblue.com/SeriousPayments/");
XmlDoc.LoadXml(response.ReadToEnd());
XmlElement NodePath = (XmlElement)XmlDoc.SelectSingleNode("/ns:Response", mgr);

while (NodePath != null)
  {
      foreach (XmlNode Xml_Node in NodePath)
      {
          Console.WriteLine(Xml_Node.Name + " " + Xml_Node.InnerText);
      }
  }
Run Code Online (Sandbox Code Playgroud)

我正进入(状态:

根元素缺失.

在:

XmlDoc.LoadXml(response.ReadToEnd());
Run Code Online (Sandbox Code Playgroud)

我的XML看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://triblue.com/SeriousPayments/">
    <Result>0</Result>
    <Message>Pending</Message>
    <PNRef>230828</PNRef>
    <ExtData>InvNum=786</ExtData>
</Response>
Run Code Online (Sandbox Code Playgroud)

我迷路了.有人能告诉我我做错了什么吗?我知道我之前有这个工作,所以我不确定我搞砸了什么.

一如既往,谢谢!

*得到答案后我编辑的原因**

我需要改变这条线: …

.net c# xml exception-handling

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

c#继承泛型集合和序列化

设置:

class Item
{
    private int _value;

    public Item()
    {
        _value = 0;
    }

    public int Value { get { return _value; } set { _value = value; } }
}

class ItemCollection : Collection<Item>
{
    private string _name;

    public ItemCollection()
    {
        _name = string.Empty;
    }

    public string Name { get {return _name;} set {_name = value;} }
}
Run Code Online (Sandbox Code Playgroud)

现在,尝试使用以下代码片段进行序列化:

ItemCollection items = new ItemCollection();

...

XmlSerializer serializer = new XmlSerializer(typeof(ItemCollection));
using (FileStream f = File.Create(fileName))
    serializer.Serialize(f, items);
Run Code Online (Sandbox Code Playgroud)

查看生成的XML后,我看到ItemCollection.Name值不存在!

我认为可能发生的事情是序列化程序将ItemCollection类型视为一个简单的Collection,因此忽略了任何其他添加的属性...... …

c# generics collections inheritance xml-serialization

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

如何让设计器在WinForms中序列化一组对象?

我有一节课:

public class Filter
{
    public Filter (string name, string value)
    {
        Name = name;
        Value = value;
    }

    public string Name {get; private set;}
    public string Value {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

还有一个集合类:

public class FilterCollection : Collection<Filter>
{
   // code elided
}
Run Code Online (Sandbox Code Playgroud)

我的组件类:

public class MyComponent : Component
{
    // ...

    [Editor(typeof(FilterEditor), typeof(UITypeEditor))]
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    public FilterCollection Filters { get; set; }

    // ...
}
Run Code Online (Sandbox Code Playgroud)

问题是设计者没有正确地序列化集合.

我确定我错过了什么,但我不知道是什么.

附加信息

我希望designer.cs文件具有以下内容:

myComponent.Filters.Add (new Filter ("some name", "some value"));
myComponent.Filters.Add (new Filter …
Run Code Online (Sandbox Code Playgroud)

c# serialization windows-forms-designer winforms

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