Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何对创建DependencyObjects的Silverlight ValueConverter进行单元测试_Silverlight_Unit Testing_Nunit_Dependencyobject - Fatal编程技术网

如何对创建DependencyObjects的Silverlight ValueConverter进行单元测试

如何对创建DependencyObjects的Silverlight ValueConverter进行单元测试,silverlight,unit-testing,nunit,dependencyobject,Silverlight,Unit Testing,Nunit,Dependencyobject,我有一个Silverlight ValueConverter,它应该使用枚举并将其转换为画笔。类似于此简化示例: public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { var brush = new SolidColorBrush(Colors.Blue); var entryType = (EntryType)value; if (ent

我有一个Silverlight ValueConverter,它应该使用
枚举
并将其转换为
画笔
。类似于此简化示例:

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
    var brush = new SolidColorBrush(Colors.Blue);
    var entryType = (EntryType)value;
    if (entryType == EntryType.Hour)
        brush.Color = Colors.Red;
    return (brush);
}
如果我想对这个进行单元测试,它将不起作用。我得到一个例外:

System.TypeInitializationException : The type initializer for 'MS.Internal.JoltHelper' threw an exception.
----> System.IO.FileNotFoundException : Could not load file or assembly 'System.Xml, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' or one of its dependencies. 
at MS.Internal.JoltHelper.get_ThreadID()
at MS.Internal.XcpImports.CheckThread()
at System.Windows.DependencyObject..ctor(UInt32 nativeTypeIndex, IntPtr constructDO)
...
我知道这是因为在我的(NUnit)单元测试中,加载了与Silverlight应用程序运行时不同的CLR。我知道,但这只是测试我的ValueConverter,所以我认为这是一个有效的测试


有人知道这是否以及如何可测试吗?

我认为这里的主要问题是您试图在非Silverlight运行时运行Silverlight代码

无论是昨天还是前一天,我写了一个ValueConverter,它的功能与您的基本相同。我还为此编写了一些测试。我使用随附的Silverlight单元测试运行程序运行了测试,所有测试都运行良好


我建议在Silverlight运行时运行Silverlight测试,即在浏览器插件中运行。您可以使用我上面提到的Silverlight单元测试框架,您也可以尝试一下。但是,我不知道这个Silverlight NUnit端口有多先进。

除了Luke的答案之外,我建议您使用
Deployment.Current.Dispatcher
查看在UI线程上调用代码的位置。这可能导致
MS.Internal.JoltHelper
异常