小编San*_*osh的帖子

.NET中的依赖注入,用于未测试的类

我正在测试StoreManager类的功能,该类依赖于DataBaseConfiguration类.

public class StoreManager {
  private DataBaseConfiguration dbConfig;
  public void Store(string name) {
    dbConfig.Store(name);
  }
  //other methods here
}
Run Code Online (Sandbox Code Playgroud)

StoreManager类存储到数据库,我可以测试此方法是否正常工作的唯一方法是从数据库进行查询.我有另一个班级在生产中这样做..

public class QueryManager {
private DataBaseConfiguration dbConfig;
public string Query(QueryExpression expr) {
    //query logic
    string name = "somename";
    return name;
}}
Run Code Online (Sandbox Code Playgroud)

虽然我只关心测试我的StoreManager类,但它看起来像我需要使用QueryManager类来测试存储值.所以我有一个像这样的基本测试用例......

[TestFixture]
public class StoreManagerTest {
[TestFixtureSetup]
public void Setup() {
    DatabaseConfiguration dbConfig = new DatabaseConfiguration(/*test database details*/);
    StoreManager sm = new StoreManager(dbConfig);
    QueryManager qm = new QueryManager(dbConfig);
}

[Test]
public void TestStore_ValidStore() {
    sm.Store("testname");
    string queryResult = qm.Query(new …
Run Code Online (Sandbox Code Playgroud)

c# nunit unit-testing dependency-injection

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

将非托管内存复制到托管字节数组

我需要将非托管内存读入托管字节数组.

为此,我有一个对非托管内存的IntPtr引用和一个长度,它表示我感兴趣的非托管内存的大小.

我使用以下代码将其读入托管字节数组.

            byte[] pixelDataArray = new byte[pixelDataLength];
            for (int i = 0; i < pixelDataLength; i++) {
                pixelDataArray[i] = Marshal.ReadByte(pixelData, i);
            }
Run Code Online (Sandbox Code Playgroud)

然而,这导致非常差的性能.使用256KB非托管内存调用此方法1000次,需要7秒以上.我认为必须有一种更有效的方法来做到这一点.

我无法使用Marshal.PtrToStructure,因为我不知道需要预先阅读的内存大小.

关于如何改进这个功能的任何想法?

c# performance marshalling unmanaged-memory

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

如何以编程方式关闭McAfee

我在Windows 7计算机上运行McAfee VirusScan Enterprise 8.7i.

我正在编写此实用程序来配置McAfee.现在我如何以编程方式关闭McAfee(使用C++或C#)?

我现在能做到的唯一方法是:

  • 从系统托盘中手动打开McAfee Virusshield图标,然后选择"退出".

  • 在SYSTEM帐户下运行命令提示符(使用System internals工具psexec),然后发出命令"sc stop McShield"

mcafee windows-7

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

Windows 7中的Application Data文件夹

我的系统上安装了Windows 7 64位.我有一个关于"C:\ ProgramData\Application Data"文件夹的问题.它提到这里,并在这里说,"应用程序数据"是一个结点指向C:\ ProgramData.所以,我希望以下命令列出C:\ ProgramData文件夹的内容(我的ProgramData文件夹中包含McAfee,Microsoft,Adobe等文件夹..)..

cd/d"c:\ ProgramData\Application Data"

DIR

但是,我没有看到任何列出的内容...但是,如果我要更深入地遍历1个目录并列出内容,那么列出该目录下的所有文件夹...

cd/d"c:\ ProgramData\Application Data\McAfee

DIR

我不明白这种行为.有人会解释吗?

backwards-compatibility programdata windows-7

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

使用PowerShell解析逗号分隔文件

我有一个文本文件,其中包含几行,每行都是逗号分隔的字符串.每行的格式是:

<Name, Value, Bitness, OSType>

Bitness并且OSType是可选的.

例如,文件可以是这样的:

Name1, Value1, X64, Windows7
Name2, Value2, X86, XP
Name3, Value3, X64, XP
Name4, Value3, , Windows7
Name4, Value3, X64 /*Note that no comma follows X64 */
....
....
Run Code Online (Sandbox Code Playgroud)

我想将每一行解析成4个变量并对其执行一些操作.这是我使用的PowerShell脚本..

Get-Content $inputFile | ForEach-Object {
    $Line = $_;

    $_var = "";
    $_val = "";
    $_bitness = "";
    $_ostype = "";

    $envVarArr = $Line.Split(",");
    For($i=0; $i -lt $envVarArr.Length; $i++) {
        Switch ($i) {
            0 {$_var = $envVarArr[$i].Trim();}
            1 {$_val = $envVarArr[$i].Trim();}
            2 …
Run Code Online (Sandbox Code Playgroud)

.net regex csv powershell

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

使用Rhino Mocks如何在传递给模拟对象的参数中检查Struct Field的值?

在Rhino Mocks中,我正在测试Subject类中的一个名为Store的方法.Subject.Store(Member)内部调用IStore.Store(Person).如何检查我在Member上设置的name参数是否与调用IStore.Store(Person)中Person参数中的名称相同.

显然,在结构中实现Equals方法然后调用Arg.Is.Equals将是一个选项.但我无法控制Person或Member结构的源代码.

这是代码片段..

struct Person {
        string name;
        int age;
        char sex;
    }

    struct Member {
        string name;
        string address;
        string departnemt;

        public Member(string name, string address, string departnemt) {
            // TODO: Complete member initialization
            this.name = name;
            this.address = address;
            this.departnemt = departnemt;
        }
        //other methods
    }

    interface IStore {
        void Store(Person p);
        //other methods
    }

    class Subject {
        IStore db;
        public void Store(Member m) {
            //some logic to convert Member to Person
            Person p = GetPersonFromMember(m);
            db.Store(p); …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing rhino-mocks

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

环境变量以确定操作系统类型(Windows XP,Windows 7)

我想在XML文件中区分Windows XP和Windows 7.以为我会在XML中使用环境变量.

但是,我找不到在Windows中定义的任何系统环境变量来提供此信息.

我看到%OSTYPE%变量,但它仅在Windows 7中可用.它没有在XP中定义.

无论如何我能做到吗?

请注意,我想要一个纯粹依赖于系统环境变量的解决方案.我不想基于执行某些命令来创建新变量,因为我想在XML文件中使用此变量.

windows windows-xp environment-variables windows-7

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

如何检索数据库的已使用大小?

在 C# 中检索 (sql) 数据库的已使用大小的最佳方法是什么?我有权访问数据库的连接字符串,并假设我也有数据库的 dbadmin 访问权限。

这个地方建议我使用 Microsoft.SqlServer.Smo.dll,但是我想知道是否可以使用 System.Data 本身中的 Sql* 命名空间来执行此操作?(如 SqlConnection、DbConnection 等)

c# database sql-server-express

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

如何在调用Perl脚本后退出命令shell?

如果我从命令提示符(c:\ windows\system32\cmd.exe)运行Perl脚本,如何在脚本完成执行后退出命令提示符.

system("exit 0")在Perl脚本内部尝试但是没有从运行Perl脚本的地方退出cmd提示符shell.

我也在exit;Perl脚本中尝试过命令,但这也不起作用.

perl cmd exit

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