小编Den*_*nis的帖子

VS2012和TFS2012单元测试主要问题

我们正在使用VS2012和TFS2012并为我们的代码编写单元测试.我们希望报告代码覆盖率,并在测试应用程序的单元测试中使用.config文件,以及日志记录,MS企业库设置等的其他一些设置.


App.config无法在新的测试框架中工作

MS的新测试框架应该很棒,但对我来说它根本不是那么好.当新框架不再使用配置文件时,我想如何在配置文件中设置一些基本配置?

我们遇到混合模式dll的问题,并找到了一个修复:添加

<startup useLegacyV2RuntimeActivationPolicy="true"> 
Run Code Online (Sandbox Code Playgroud)

到app.config.但这对我们的单元测试项目不起作用.因为配置文件不再存在了.搜索互联网提出了一个解决方案

' Visual Studio .Net 4.5测试项目中.Net 2.0混合模式程序集问题 '

这意味着在程序文件目录中编辑Visual Studio 11本身的文件,我认为这不是一个很好的解决方案....

一些基本的appsetting怎么样?我怎么设置这个?


不要使用.testSettings文件

MS也不推荐使用旧的.testsettings文件,因为使用了旧的测试框架.如果我使用.testsettings文件,我无法在我的tfs2012构建服务上设置代码覆盖率.

另一个问题是我们的代码需要一个dll(system.data.sqlite.dll),但只有在运行时单元测试代码才需要这个dll.因此不需要参考.我们使用testsettings文件中的Deployment选项卡修复了此问题.但是在新框架中,您不应该使用testsettings文件.如果需要文件,则具有[deploymentitem]属性.但deploymentitem属性只能用于[testmethial]或[assemblyinitialize]方法上的[testmethod].但是我们的代码需要[testinitialize]方法中的dll.所以没有办法让dll到位.

只是在[assemblyinitialize](或testinitialize)方法中使用File.Copy复制它不起作用.

将dll作为文件添加到项目中,并将"复制到输出目录"设置为"始终复制",如" 使用.runsettings文件配置单元测试 "中所述,也不起作用.

这个(真的不是很好的)解决方案是添加dll作为引用,然后实例化一个类,并且不要使用它.这样就需要dll,否则就不会构建,因此dll会将自己部署到正确的目录中.


如何解决我的问题? - 我想在单元测试中使用配置文件. - 我想在'assemblyinitialise'和/或'classinitialize'方法中部署一些neede文件. - 我希望在我的TFS2012每晚构建启用代码覆盖率.

unit-testing visual-studio-2012 tfs2012

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

在Visual C#2010中获取DTE2对象的引用

我想在Visual Studio 2010中使用带有C#的DTE2对象来获得对当前解决方案的引用.

我首先尝试了以下代码:

var dte = Marshal.GetActiveObject("VisualStudio.DTE.10.0") as EnvDTE80.DTE2;
Run Code Online (Sandbox Code Playgroud)

但是当我打开2个解决方案,并且这个代码在第一个解决方案中时,我得不到对当前解决方案的引用,而是对我加载的最后一个解决方案的引用.我需要当前的解决方案......

在互联网上搜索,我发现以下解决方案如何从VSPackage获取当前的解决方案目录?:

// Get an instance of the currently running Visual Studio IDE
DTE dte = (DTE)GetService(typeof(DTE));
Run Code Online (Sandbox Code Playgroud)

但是当我使用它时,我的dte对象总是为NULL.

那么如何使用C#on .net framework 4.0获取VS2010中当前的解决方案对象?

c# add-in visual-studio-2010 envdte

10
推荐指数
2
解决办法
8833
查看次数

C#如何使用AutoFixture简化单元测试字符串参数

我正在尝试创建一种在单元测试中测试字符串参数的简单方法,对于大多数字符串参数,我想在参数为Null,Empty或仅包含空格时检查行为.

在大多数情况下,我使用string.IsNullOrWhiteSpace()检查参数,如果它具有这三个值中的一个,则抛出异常.

现在进行单元测试,似乎我必须为每个字符串参数编写三个单元测试.一个用于空值,一个用于空值,一个用于空白.

想象一个带有3或4个字符串参数的方法,然后我需要编写9或12个单元测试...

任何人都可以想出一个简单的方法来测试这个吗?也许使用AutoFixture?

c# unit-testing autofixture

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

使用 Wix 安装后删除目录和文件

在安装过程中,我需要在自定义操作中添加一些额外的文件,这些文件在 InstallExecuteSequence 标记中配置为 After="InstallFinalize"。

使用文件后,我希望删除文件(和目录)。

我怎样才能做到这一点?

我的 InstallExecuteSequence 看起来像这样:

  <InstallExecuteSequence>
     <Custom Action="UNINSTALLSERVICE"
             After="InstallInitialize">REMOVE="ALL"</Custom>
     <Custom Action="CLEANUP"
             Before="RemoveFiles">REMOVE="ALL"</Custom>
     <Custom Action="INSTALLSERVICE"
             After="InstallFinalize" />
  </InstallExecuteSequence>
Run Code Online (Sandbox Code Playgroud)

如果我创建一个自定义操作

ExeCommand="cmd /C RD "somedir" /s /q"
Run Code Online (Sandbox Code Playgroud)

并将其添加到序列中,如下所示:

 <Custom Action="CLEANTEMP" After="InstallFinalize" />
Run Code Online (Sandbox Code Playgroud)

我收到构建错误:

Error   596 ICE77: CLEANCONFIG is a in-script custom action.  
It must be sequenced in between the InstallInitialize action 
and the InstallFinalize action in the InstallExecuteSequence table
Run Code Online (Sandbox Code Playgroud)

installation windows-installer wix

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

带有多个属性的对象的打字稿排序数组

我喜欢用具有多个属性的对象对数组进行排序。我的对象有一个名为 name 的字符串和一个名为 required 的布尔值。

首先我想按年龄排序,然后按名字排序。

我该怎么做呢?

按年龄订购很容易...:

this.model.mylist.sort((obj1: IObj, obj2: IObj => {
    if (obj1.age < obj2.age) {
        return -1;
    }
    if (obj1.age > obj2.age) {
        return 1;
    }
    return 0;
});
Run Code Online (Sandbox Code Playgroud)

arrays sorting typescript

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

MOQ:传递到方法中的引发异常

我在接口上有一个方法:

void HandleError(MyClasss c, object o, Exception e);
Run Code Online (Sandbox Code Playgroud)

我想用最小起订量来模拟这个,并在任何参数上抛出提供的Exception e。

就像是:

_mock.Setup(a => a.HandlreError(It.IsAny<MyClass>(), It.IsAny<object>()
   , It.IsAny<Exception>())).Throws( [the 'any' exception] )
Run Code Online (Sandbox Code Playgroud)

c# unit-testing moq

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