Technical content from the staff at 2e2. We are always busy with; SharePoint / moss, c#, records management (EDRM) and anything .net
Monday, November 9, 2009
Wisdom and Microsoft Dynamics CRM
We believe that we have taken an interesting approach to this problem that will allow CRM administrators to link any CRM entity type to Wisdom thus giving any CRM entity EDRM capabilities.
Useful links
Microsoft Dynamics http://www.microsoft.com/dynamics/
Wisdom http://www.diagonal-consulting.com/Technology/Wisdom/Pages/Default.aspx
Wednesday, October 21, 2009
Testing Console Applications
I did some work this week on a command line installer for RBS. I needed to make some modifications to the install process. I wanted to-do this the TDD way. I did not want to refactor the entire project just to make it testable, I thought I would try to come up with a nice way to test my console application. I needed to capture the output of the console application to check that my new features were working correctly.
RBS is remote blob storage, see the RBS blog http://blogs.msdn.com/sqlrbs/
Firstly I tried to launch the exe and capture the output, this worked well but I could not debug my new code. I know true TTDers don't use debuggers, but I needed to :)
I managed to get this working by referencing my Console Project from my test project (yes you can reference an EXE). I could then add code like :
InstallProviderSetup.Main(new string[] { "-CLIENTCONFIG" });
As you can see, you can just call the static Main method from code. To see if my test worked I need to check the output of the console application. I did this with the following code :
var stdout = GetStdOut();
Assert.AreEqual(true, stdout.Contains("The required switch CONFIGURATIONFILE"),"The required switch CONFIGURATIONFILE not in console out");
Assert.AreEqual(true, stdout.Contains("The required switch NAME"),"The required switch NAME not in console out");
The rest of the code is :
MemoryStream memoryStreamConsole;
StreamWriter streamWriterConsole;
[TestInitialize()]
public void TestInitialize()
{
memoryStreamConsole = new MemoryStream();
streamWriterConsole = new StreamWriter(memoryStreamConsole);
Console.SetOut(streamWriterConsole);
}
protected string GetStdOut()
{
streamWriterConsole.Flush();
var rval = Encoding.Default.GetString(memoryStreamConsole.ToArray());
System.Diagnostics.Trace.WriteLine(rval);
return rval;
}
Feel free to view the entire project at codeplex
You can find out more about Diagonal and Wisdom by visting the wisdom website