问题标签 [ncrunch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1153 浏览

nunit - 在 x86 目标上工作时,使用 Roslyn.Services.Workspace 进行单元测试会导致 SecurityException

我正在为我的项目处理一组常量,我想使用在源代码级别验证其中的一些。为了实现这一点,我使用以下代码段将整个解决方案加载到带有and的AppDomain 中,即使用x86 平台目标启用远程处理IsFullyTrusted == trueIsHomogenous == true

使用 Roslyn 的 x86 平台的 NCrunch 和 NUnit 测试运行器

但是,在使用具有平台配置 x86 的 1.45 或 2.6.2nunit-console-x86.exe作为测试运行器时,我不断得到以下信息System.Security.SecurityException

NCrunch 论坛上有一个讨论但我尝试了以下所有选项但没有成功

  • 添加[assembly: AllowPartiallyTrustedCallers]到 AssemblyInfo.cs
  • 添加[assembly: SecurityRules(SecurityRuleSet.Level1)]到 AssemblyInfo.cs
  • 添加<NetFx40_LegacySecurityPolicy enabled="true" />到 app.config
  • 以管理员身份运行 VS2012
  • 装饰单元测试和实现[SecuritySafeCritical]
  • 更新:创建新的AppDomain并提供
    • PermissionState.Unrestricted,SecurityPermissionFlag.AllFlagsDataProtectionPermissionFlags.AllFlags
    • 添加主机证据SecurityZone.MyComputerSystem.Security.Policy.HashSystem.Security.Policy.StrongName
    • fullTrustAssemblies在创建时添加所有程序集(我的和 Roslyn CTP)AppDomain

更新#2

此异常仅在我在 x86 配置下运行测试时发生,在我切换到 x64 平台配置后,一切似乎都工作正常

问题

在 x86 配置下运行时,是否有任何其他属性或配置更改app.configAppDomain有助于在 .NET Framework 远程处理中启用反序列化?System.Runtime.Remoting.ObjRef

临时解决方案

仅为 unittest 项目切换到 x64 构建配置

源代码

附加信息

我也注意到...

  1. Roslyn.Services.dll在所有测试完成后,很多实例都在后台挂起。
  2. NCrunch 缺乏主机证据:System.Security.Policy.HashSystem.Security.Policy.StrongName带有测试运行程序程序集名称
  3. MSIL(内部应该是 x64)和 2.6.2nunit-console.exe测试运行器工作正常,所以看起来像 Roslyn configuration/remoting/security configuration issue
0 投票
2 回答
254 浏览

xml - XmlSerializer 在 MSTest 运行器和 NCrunch 中的行为不同

我的一位同事遇到了XMLSerializer通过 MSTest Runner 或 NCrunch 运行时行为不同的情况。

通过 N-Crunch 运行测试时,输出包含

xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

通过 MSTest Runner 运行时,输出包含

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xsi和的顺序xsd不同。其余的输出是一样的。

这可能是什么原因?

我们不使用<system.xml.serialization>配置中的任何设置。

0 投票
1 回答
8443 浏览

c# - 使用 NSubstitute 模拟泛型方法

我有一个带有许多通用方法的接口。这些方法根据传入的数据类型执行操作。如何使用 NSubstitute 模拟它?目前,我不得不求助于使用具体类而不是模拟,因为我无法处理将调用该方法的所有可能类型。

谢谢。

0 投票
1 回答
731 浏览

c# - 使用 [ignore] 属性使 NCrunch 运行单元测试

我有一个标有 [ignore] 属性的单元测试,因此 NCrunch 不会运行它。但是,它希望能够手动运行它。使用 Resharper,即使添加了 [ignore] 属性,也可以手动运行测试。

NCrunch 可以做到这一点吗?

0 投票
1 回答
426 浏览

c# - 这些单例单元测试实际上是否按预期工作?

我有一个正在尝试测试的引导程序对象(使用 xunit)。测试似乎通过了,但我在我使用的一个测试运行器 (ncrunch) 中看到了一些奇怪的东西。我同时使用 ncrun 和 resharper xunit runner。我的想法是获取单例所在的程序集,将其加载到新的应用程序域中,使用反射运行我的测试,然后卸载应用程序域。正如我所说,测试在 ncrun 和 resharper 中都通过了,但是 ncrun 没有显示我期望的执行路径。这是代码:

现在,我认识到需要在代码方面进行一些清理,但我很高兴看到它们都是绿色的。如果我摆弄它们以使它们失败,那将按预期工作。唯一有点臭的地方是 ncrunch 报告了奇怪的执行路径。具体来说,ncrunch 显示抛出无效操作异常的行永远不会执行。

我想 ncrunch 在处理其他应用程序域时可能存在错误,但更有可能的是我实际上并不了解应用程序域发生了什么,但我不确定从这里继续。

另外,我确实知道单例很糟糕,但我相信引导程序是它们真正有用的地方之一。您要保证它们只启动一次。

0 投票
1 回答
392 浏览

visual-studio-2012 - 删除额外的解决方案配置后,NCrunch 将无法构建

我们有一个解决方案,除了典型的调试和发布之外还有几个额外的解决方案配置,并且将回到简单的调试和发布。一些项目没有 Debug 版本,或者没有 Release 版本。

我有:

  1. 为每个缺少的项目重新添加了调试和发布
  2. 将解决方案配置更改为调试
  3. 删除了额外的解决方案配置
  4. 将每个项目更改为调试(项目现在匹配解决方案)
  5. 删除了 web.*.config 转换

NCrunch 现在报告:

未为项目“nCrunchTemp_fab725ec-f404-4afe-9916-c4edb033c2bc”设置 OutputPath 属性。请检查以确保您为此项目指定了有效的配置和平台组合。配置='本地'平台='AnyCPU'。您可能会看到此消息,因为您正在尝试构建没有解决方案文件的项目,并且指定了该项目不存在的非默认配置或平台。

NCrunch:此错误通常是由依赖于 Visual Studio 提供的选定构建配置以在构建期间设置 $(Platform) 和 $(Configuration) MSBuild 属性的项目引起的。除非另有配置,否则 NCrunch 通常会使用在 .proj 文件中指定的默认 $(Configuration) 和 $(Platform) 属性 - 因此,为了让您的项目使用 NCrunch 构建,必须可以使用命令行构建项目MSBuild 无需手动注入构建属性。您很可能需要编辑 .proj 文件以将其默认的 $(Configuration) 和 $(Platform) 属性与文件中提供的属性组对齐。

“本地”是旧的解决方案配置之一。

我一直在寻找 NCrunch 在哪里获取 Local,但在任何配置屏幕或文件中都找不到它。

该解决方案在调试和发布配置中从 Visual Studio 构建。它不是用 NCrunch 构建的。我试过关闭和重新打开 VS,这没有任何区别。

0 投票
1 回答
734 浏览

path - 让 NCRUNCH 尊重项目设置中的输出路径?

我已经下载了 Visual Studio 2013 的 NCrunch 试用版,并试图让它与我的解决方案一起工作,该解决方案构建良好并且具有工作的 MS 单元测试。我能够让 NCrunch 构建所有项目(C# 和 C++ 的混合体),但每个测试都失败并显示以下消息:

程序集初始化/清理失败:System.TypeInitializationException:“IDC_UnitTests.DataCollectorTests”的类型初始化程序引发异常。---> System.IO.FileNotFoundException:无法加载文件或程序集“IDC.dll”或其依赖项之一。指定的模块无法找到。在 IDC_UnitTests.DataCollectorTests..cctor()

每个项目的输出路径都定义为:..\Debug\

看起来 NCrunch 确实没有使用此输出路径,因为 1. 这是我之前看到的相同错误,当时我不小心没有将项目之一的输出路径设置为 ..\Debug 2. 当我查看NCrunch 目录(AppData\Local\NCrunch\18552\69\Debug,我看不到那里的所有项目 dll。不确定 NCrunch 是否组织了 MSBuild 之类的东西,但它似乎很可疑。

有任何想法吗?

谢谢,戴夫

0 投票
1 回答
682 浏览

ncrunch - NCrunch 找不到相对文件路径

我的 app.config 引用了 master.config。

当 NCrunch 运行测试时,它无法找到 master.config 文件,因为它们从不同的目录运行;因此,测试窗口总是显示红色,有点违背 NCrunch 的目的。

我怎样才能解决这个问题?

0 投票
1 回答
204 浏览

microsoft-fakes - 通过 nCrunch 和 MS Fakes 构建单元测试项目大约需要 40 秒

我在一个单元测试项目中进行了大约 27 个测试,其中一个是使用 System.Fakes 来伪造 System.DateTime 调用。似乎单元测试项目正在使用每个构建重新创建 System.Fakes 扩展,这意味着 nCrunch 显示单元测试结果的速度非常慢。在测试中使用 rhinomocks 模拟接口时,我没有遇到过这种情况,我想知道是否有任何人在使用 Microsoft.Fakes 时都知道的提高这种性能的方法。

0 投票
0 回答
632 浏览

unit-testing - 在 NCrunch 下运行 xUnit 测试 --- System.MissingMethodException : Method not found: 'Void Xunit.Assert.Null(...)

我正在尝试使用 VS 2012 中的现有解决方案启动和运行 NCrunch。但是,当通过 NCrunch 启动时,单元测试将不会运行。

尝试在 NCrunch 下运行单元测试时出现 Method not found: 'Void Xunit.Assert.Null(..) 错误。

使用 xUnit“运行单元测试”上下文菜单或 IDE 中的内置“运行测试”运行时,测试运行。

我已经尝试在调试和发布模式下清理和重新编译。我已经尝试在 NCrunch 下调试测试(它没有工作)。我还检查了 GAC 以获取 xUnit 程序集的实例,但它不存在。

版本:

  • NCrunch v2.4.0.2
  • XUnit Runner for VS 2012/2013 v0.99.3
  • 视觉工作室 2012
  • 代码在 C# 中

以下是 NCrunch 测试窗口的输出:

关于如何解决这个问题的任何想法?