问题标签 [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.
nunit - 在 x86 目标上工作时,使用 Roslyn.Services.Workspace 进行单元测试会导致 SecurityException
我正在为我的项目处理一组常量,我想使用roslyn在源代码级别验证其中的一些。为了实现这一点,我使用以下代码段将整个解决方案加载到带有and的AppDomain 中,即使用x86 平台目标启用远程处理IsFullyTrusted == true
IsHomogenous == true
:
使用 Roslyn 的 x86 平台的 NCrunch 和 NUnit 测试运行器
但是,在使用具有平台配置 x86 的ncrunch 1.45 或nunit 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.AllFlags
和DataProtectionPermissionFlags.AllFlags
添加主机证据SecurityZone.MyComputer
:System.Security.Policy.Hash
和System.Security.Policy.StrongName
fullTrustAssemblies
在创建时添加所有程序集(我的和 Roslyn CTP)AppDomain
更新#2
此异常仅在我在 x86 配置下运行测试时发生,在我切换到 x64 平台配置后,一切似乎都工作正常
问题
在 x86 配置下运行时,是否有任何其他属性或配置更改app.config
或AppDomain
有助于在 .NET Framework 远程处理中启用反序列化?System.Runtime.Remoting.ObjRef
临时解决方案
仅为 unittest 项目切换到 x64 构建配置
源代码
- 完整的源代码可在 github 上获得:使用 NCrunch 在 unittest 之后重现错误运行
IntrospectionTests.Introspection_SearchForComplexityGt10_ApprovedList
- NCrunch 论坛上的讨论
附加信息
我也注意到...
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>
配置中的任何设置。
c# - 使用 NSubstitute 模拟泛型方法
我有一个带有许多通用方法的接口。这些方法根据传入的数据类型执行操作。如何使用 NSubstitute 模拟它?目前,我不得不求助于使用具体类而不是模拟,因为我无法处理将调用该方法的所有可能类型。
谢谢。
c# - 使用 [ignore] 属性使 NCrunch 运行单元测试
我有一个标有 [ignore] 属性的单元测试,因此 NCrunch 不会运行它。但是,它希望能够手动运行它。使用 Resharper,即使添加了 [ignore] 属性,也可以手动运行测试。
NCrunch 可以做到这一点吗?
c# - 这些单例单元测试实际上是否按预期工作?
我有一个正在尝试测试的引导程序对象(使用 xunit)。测试似乎通过了,但我在我使用的一个测试运行器 (ncrunch) 中看到了一些奇怪的东西。我同时使用 ncrun 和 resharper xunit runner。我的想法是获取单例所在的程序集,将其加载到新的应用程序域中,使用反射运行我的测试,然后卸载应用程序域。正如我所说,测试在 ncrun 和 resharper 中都通过了,但是 ncrun 没有显示我期望的执行路径。这是代码:
现在,我认识到需要在代码方面进行一些清理,但我很高兴看到它们都是绿色的。如果我摆弄它们以使它们失败,那将按预期工作。唯一有点臭的地方是 ncrunch 报告了奇怪的执行路径。具体来说,ncrunch 显示抛出无效操作异常的行永远不会执行。
我想 ncrunch 在处理其他应用程序域时可能存在错误,但更有可能的是我实际上并不了解应用程序域发生了什么,但我不确定从这里继续。
另外,我确实知道单例很糟糕,但我相信引导程序是它们真正有用的地方之一。您要保证它们只启动一次。
visual-studio-2012 - 删除额外的解决方案配置后,NCrunch 将无法构建
我们有一个解决方案,除了典型的调试和发布之外还有几个额外的解决方案配置,并且将回到简单的调试和发布。一些项目没有 Debug 版本,或者没有 Release 版本。
我有:
- 为每个缺少的项目重新添加了调试和发布
- 将解决方案配置更改为调试
- 删除了额外的解决方案配置
- 将每个项目更改为调试(项目现在匹配解决方案)
- 删除了 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,这没有任何区别。
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 之类的东西,但它似乎很可疑。
有任何想法吗?
谢谢,戴夫
ncrunch - NCrunch 找不到相对文件路径
我的 app.config 引用了 master.config。
当 NCrunch 运行测试时,它无法找到 master.config 文件,因为它们从不同的目录运行;因此,测试窗口总是显示红色,有点违背 NCrunch 的目的。
我怎样才能解决这个问题?
microsoft-fakes - 通过 nCrunch 和 MS Fakes 构建单元测试项目大约需要 40 秒
我在一个单元测试项目中进行了大约 27 个测试,其中一个是使用 System.Fakes 来伪造 System.DateTime 调用。似乎单元测试项目正在使用每个构建重新创建 System.Fakes 扩展,这意味着 nCrunch 显示单元测试结果的速度非常慢。在测试中使用 rhinomocks 模拟接口时,我没有遇到过这种情况,我想知道是否有任何人在使用 Microsoft.Fakes 时都知道的提高这种性能的方法。
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 测试窗口的输出:
关于如何解决这个问题的任何想法?