小编Daa*_*mer的帖子

C#stubbing.每个可测试对象的接口?

我已经看到了关于'如何存根你的课程以便你可以控制SUT内发生的事情'的多个答案.

他们说一件事:

创建一个接口并使用依赖注入注入该接口,并使用随后注入SUT的相同接口创建存根.

但是,我在以前的工作场所学到了什么:

如果进行单元测试,则测试所有类/功能.

这是否意味着对于每个具有特定功能布局的类,您必须创建一个接口?

这意味着类/文件的数量几乎是两倍.

如下面的例子所示,这是"走的路"还是我在单元测试过程中遗漏了什么?

注意:我使用的是VS2012 Express.这意味着没有'Faker'框架.我正在使用'标准'VS2012单元测试框架.

作为一个非常非常简单的例子,它允许我将传递给SUT的每个接口存根.

IFoo.cs

public interface IFoo
{
    string GetName();
}
Run Code Online (Sandbox Code Playgroud)

Foo.cs

public class Foo : IFoo
{
    public string GetName()
    {
        return "logic goes here";
    }
}
Run Code Online (Sandbox Code Playgroud)

IBar.cs:

public interface IBar : IFoo
{
    IFoo GetFoo();
}
Run Code Online (Sandbox Code Playgroud)

Bar.cs:

public class Bar : IBar
{
    public string GetName()
    {
        return "logic goes here";
    }

    public IFoo GetFoo()
    {
        return null; // some instance of IFoo
    }
}
Run Code Online (Sandbox Code Playgroud)

IBaz.cs:

public interface …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing vs-unit-testing-framework

6
推荐指数
2
解决办法
2296
查看次数

避免在泛型类型参数上使用==和!=运算符,但它可以与null进行比较吗?

根据类型参数约束(C#编程指南)文档说,我引用:

在应用where T:class约束时,请避免使用type参数上的==和!=运算符,因为这些运算符将仅测试引用标识,而不是值相等.即使这些运算符在用作参数的类型中重载,也是如此.以下代码说明了这一点; 即使String类重载==运算符,输出也是假的.

使用以下示例:

public static void OpTest<T>(T s, T t) where T : class
{
    System.Console.WriteLine(s == t);
}
static void Main()
{
    string s1 = "target";
    System.Text.StringBuilder sb = new System.Text.StringBuilder("target");
    string s2 = sb.ToString();
    OpTest<string>(s1, s2);
}
Run Code Online (Sandbox Code Playgroud)

但是,ReSharper(我刚刚开始使用demo/trial版本来查看它是否对我有任何价值)提供了一个提示/提示来对参数进行空值检查,如下所示:

public Node(T type, Index2D index2D, int f, Node<T> parent)
{
    if (type == null) throw new ArgumentNullException("type");
    if (index2D == null) throw new ArgumentNullException("index2D");
    if (parent == null) throw new ArgumentNullException("parent");
}
Run Code Online (Sandbox Code Playgroud)

(T受限制where T : …

c#

6
推荐指数
2
解决办法
378
查看次数

从第一列不包含的数据表中删除行(某些字符串)

我有DataTable,其中包含以下列:

ClientID date numberOfTransactions price
Run Code Online (Sandbox Code Playgroud)

ClientID的类型为string,我需要确保其内容包含表中每个值的"A-"和"N6".

我需要删除DataTable中的所有行,其中第一列(ClientID)不包含"A-" "N6"(一些总计和其他不必要的数据).如何从DataTable中专门选择和删除这些行?

我知道这个:

foreach (DataRow row in table.Rows) // Loop over the rows.
    {

        //Here should come part "if first column contains mentioned values
    }
Run Code Online (Sandbox Code Playgroud)

我也知道这一点

If (string.Contains("A-") == true &&  string.Contains("N6") == true)

{
//Do something
}
Run Code Online (Sandbox Code Playgroud)

我需要帮助如何为每行的第一列实现此功能.

c# datatable

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

关于MISRA中C工会的想法

米斯拉说禁止所有工会。我也知道,只要对偏差进行了彻底的讨论和记录,就可以允许它们。

我们有一个微控制器和一个外部eeprom来存储统计数据(事件/错误记录,参数设置等等)。

该事件日志由大约80多个事件计数器组成,其中一些计数器为8、16和32位(均为无符号)。参数存储区由大约200个参数组成,还与8、16和32位值(无符号)混合在一起。

我们正在重写所有符合MISRA的代码,并且这些值先前已定义如下:

typedef struct
{
  U16BIT eventLogVar1;
  U32BIT eventLogVar2;
  U8BIT  eventLogVar3;
  U8BIT  eventLogVar4;
  U32BIT eventLogVar5;
} EVENT_LOG;

typedef union
{
  EVENT_LOG log;
  U8BIT     array[sizeof(EVENT_LOG)];
} ELOG;

ELOG log;
Run Code Online (Sandbox Code Playgroud)

现在这不是真的符合MISRA。参数日志也是如此。但这是从eeprom读取和写入的最简单方法,因为我只需要通过阵列读取/写入即可从eeprom读取/写入。

我们还有其他一些规则是我们绝对不允许违反的。没有全局(外部)变量(通过头文件)。如果需要,所有局部变量只能通过get / set函数访问。

这意味着,如果我们需要完全写出所有这些参数,则每个参数都应获得自己的get / set函数以在整个应用程序中更改它们。

我考虑过的解决方案之一是:

#ifdef EITHER
enum
{
    eventLogVar1 = 0; /* 00 */
    pad01;            /* 01 */
    eventLogVar2;     /* 02 */
    pad03;            /* 03 */
    pad04;            /* 04 */
    pad05;            /* 05 */
    eventLogVar3;     /* 06 */
    eventLogVar4;     /* 07 */
    eventLogVar5;     /* 08 …
Run Code Online (Sandbox Code Playgroud)

c misra

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

!= C语言中的符号查询

int x = 15 ;
printf ( "\n%d \t %d \t %d", x != 15, x = 20, x < 30 ) ;
Run Code Online (Sandbox Code Playgroud)

代码的输出是1 20 1,但我认为它应该是0 20 1,因为15 == 15 ...

我遇到了"x!= 15"部分的问题

c operators

3
推荐指数
2
解决办法
324
查看次数

WPF的GUI思想,虽然不知道如何实现它

我所得到的是basicly两个类PluginPluginLauncher

插件是一个抽象类,它实现了一些函数,使类成为PluginLauncher类的插件.

PluginLauncher是一个包含集合(SortedDictionary)的类,包括一些帮助函数来启动,停止,重启所有或特定的插件.

它还在初始化时加载所有插件.每个插件都可以是.exe或.dll,其类继承自Plugin.为每个插件创建一个AppDomain,并为每个插件设置通信(通过套接字通过简单的IPC消息传递)(仍然必须实现)

我希望有一个非常非常基本的GUI实现,它只包含所有已加载的插件的列表,注意插件名称,状态(可以运行,停止,停止,已经过早停止(一个枚举))和每个插件的按钮启动,停止或重新启动它.

我知道我可以通过在GUI上放置元素并计算每个X/Y位置等来添加程序功能,但我确信WPF有一些预制的'功能'.但我对WPF很新,并且不知道从哪里开始寻找.

一个简单的说明:我被限制为.net 3.5(或更低)因此没有4.0元素.

我已经包含了一个非常简单(万岁的mspaint技能)的例子.

我想到的简单的MSPaint技巧

c# wpf user-interface

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

使用斜杠为构造函数添加返回类型

是否有一个特定的原因,PhpStorm以斜杠为前缀构造函数的返回类型?

class MyTest
{
    /**
     * Constructor
     *
     * @return \MyTest
     **/
    public function __construct(){}
}
Run Code Online (Sandbox Code Playgroud)

它在PHPDoc本身中有特殊含义吗?还是一些特定的IDE功能?

php phpdoc phpstorm

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