Unit Testing Application WPF com siteoforigin pack Uri
Tenho alguns testes de unidade que estou escrevendo para um aplicativo WPF e, por mais que tentei evitá-lo, tenho algum código em teste que instancia um View. Assim que a exibição é instanciada, todas as extensões de marcação, estilos etc. são avaliadas. Para resolver isso, criei um manequimInscriçã e registrou todos os recursos necessários quando o conjunto de teste foi inicializado:
[TestClass]
public class AssemblyInitialize
{
[AssemblyInitialize]
public static void SetupTestAssembly(TestContext context)
{
if (Application.Current == null)
new Application();
var resources = new List<string>
{
"pack://application:,,,/AssemblyName;component/ResourceDictionary.xaml"
};
foreach(var resource in resources)
{
var uri = new Uri(resource);
var dictionary = new ResourceDictionary { Source = uri };
Application.Current.Resources.MergedDictionaries.Add(dictionary);
}
}
}
Eu usei essa abordagem no passado e funciona bem.
Encontrei um pequeno problema com essa abordagem. Eu tenho alguns recursos que usampack: // siteoforigin: no pacote Uri, e quando os testes instanciam essa exibição, recebo um erro por não conseguir resolver o arquiv
The XAML:
<ResourceDictionary
xmlns="...">
<ImageBrush
x:Key="ResourceName"
ImageSource="pack://siteoforigin:,,,/Resources/image.png"
/>
</ResourceDictionary>
Mensagem de erro
Could not find a part of the path 'C:\\Solution\\TestResults\\Workspace_2012-03-01 14_54_29\\Resources\\image.png'
Adicionei o diretório Resources como um item de implantação e confirmei que a imagem é o diretório de saída TestRun. Parece que o AppDomain está operando uma pasta acima da localização dos meus assemblies de teste, porque o arquivo está realmente localizado em:
c: \ Solution \ TestResults \ Workspace_2012-03-01 14_54_29 \For \ Resources \ image.png
Alguma sugestão sobre como posso fazer com que o aplicativo WPF use o diretório Out como sua pasta principa