Supported Step Exporter – watch your language

After working intensively with SpecFlow for a while now I have experienced something that I think is common. After a while you have all the steps you need… Or rather, if you write your step regular expressions carefully you’ll end up with a little language that automates the running of your application. So if you stay within the supported language you can simply write Gherkin. In Swedish for example.

It’s really cool to write Swedish that tells what the application should do. And it does it. I wrote about that experience before. The extension of this is that non-developers soon can start to write the specs and run them without any steps needed to be developed. But to do that you’ll need to have communicate which steps are supported.

Also after a while the supported regular expressions steps can be...

Read More

WhiteStepHelper – a small step toward smaller steps

I have been using White in our project for a couple of days now and it’s looking good I must say. I use White in conjunction with SpecFlow to get our specifications in an executable format (that still makes me smile everything I think of it…)

What I soon realized was that much of the White-automating could be pushed to a base class… That is much of the stuff that we’re using and the way we’ll like to do stuff can be pushed downwards.

However – I think that the result is pretty generic and can be used outside our project. So if you need it you can have it.

Well known names

The first thing that we’ve thought about was the fact that most user doesn’t refer to the items in the GUI by the programming name (“So I clicked the btnSearch2-button”, doesn’t sound...

Read More

Snippet for creating testmethod in VB.NET

I’ve already posted this snippet in C#, but as I from time to time need it in VB.NET I’ll post that too. Here you go:

<?xml version=”1.0” encoding=”utf-8” ?> <CodeSnippets xmlns=”http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet”>     <CodeSnippet Format=”1.0.0”>         <Header>             <Title>TestMethod</Title>             <Shortcut>tm</Shortcut>             <Description>Code snippet for creating a testmethod</Description>             <Author>Marcusoft (www.marcusoft.net)</Author>             <SnippetTypes>                 <SnippetType>Expansion</SnippetType>                 <SnippetType>SurroundsWith</SnippetType>             </SnippetTypes>         </Header>         <Snippet>             <Declarations>                 <Literal>                     <ID>methodName</ID>                     <ToolTip>The name of the test</ToolTip>                     <Default>methodName</Default>                 </Literal>             </Declarations>             <Code Language=”VB”>               <![CDATA[<TestMethod()> _               Public Sub should_$methodName$()         ‘ Arrange

        ‘ Act

        ‘ Assert         Assert.Fail(“Implement test!”)     End Sub]]>             </Code>         </Snippet>     </CodeSnippet> </CodeSnippets>

Read More

Virtual PC performance tip Multi-core support

I often get to work with brilliant people. That’s one the real benefits of being a consultant, I would argue. Last week I got to know Thomas Gyllencreutz that came onboard my project. He didn’t waste any time to get the performance in our virtual development environments to new heights. This post is a condensation of his findings that really got our Virtual PC images flying. A general performance tip is to put your virtual hard drive (.vhd-file) on a separate hard drive, as suggested by mr Hanselmann. OK, to get the multi-core support you’ll need to find out how many cores your system have. The easiest way to do that is to open Task Manager (CTRL+SHIFT+Esc) and check the number of CPU-boxes under the performance tab: Read More

A story on specification by example in two projects

The last month I’ve read The Goal by Eliyahu M. Goldratt. Apart from being a great book it was also written in a really interesting way. It’s a novel in which we follow mr Alex Rogo and how he learns the subject of the book Theory of Constraints. I thought that I might try to mimic that style a bit in this post.

The subject I’m getting back to again and again nowadays is agile for the whole project. In my opinion agile thoughts often come from development and never gets a good foothold in the analysis/requirements or in the testing departments. “Yes, by all means… Do this agile you like so much but please let us write the specs and test cases as we always have done.” – is a common reasoning where I’ve been.

OK – on to the story. It comes...

Read More

Using BDD with SpecFlow, WPF and White

It’s been a while since I blogged. Twitter is taking over. I compensate that with a major blog post.

Background

I written about the project I’m in right now a couple of times before and to make a long story short; we don’t have any requirements! We only have the existing application which we are to “convert” from VB6 to VB.NET. 1:1 is the mantra – which is to be understood as: functional the same.

I have suggested for the team that we work with BDD (or ATDD if you like) to create the requirements as we go. They liked it. A lot!

To not let this post grow totally out of control, I leave the description for that process to another post.

To put my money where my mouth is and show them how it should be accomplished. This blog post is...

Read More

Solution to closing the lid of my MacBook cause it to get VERY hot

OK – this might not be one of my ordinary subjects but this was soooo annoying. Sometimes when I closed the lid of my MacBook Pro there were something still running. This caused the battery to drain in about 20 minutes and the computer to go very, very hot. For the first time ever I actually burned myself on a computer.

I have checked around the net for a solution, and even went into a MacStore but as the error comes and goes there’s not much security in the tips.

As suspected one process doesn’t have time to close down and just keeps running. But which one?

In my case it was something called Safe Sleep (that prevents unsaved data from being lost if the power goes out). This is disabled by the following commands in a Terminal window:

sudo pmset -a hibernatemode 0 sudo...
      
Read More

Resovling policy enabled objects with Unity 2.0

I had the opportunity to use Unity and Enterprise Libarary in my current project. On of the really cool features of Enterprise Library (and most Dependency Injection frameworks) is the support for Aspect Oriented Programming. It’s a really neat way of handling the cross-cutting concerns in your application.

I was therefore very surprised when I had a really hard time to get, what I thought was simple, the following scenario to work:

I want the objects that I resolve to be “policy enabled” – i.e. configured in such a way that I can add policies in the configuration that can be picked up later and applied to the resolved objects.

That is, it was hard in Enterprise Library 4.1 and Unity 1.2. I had to scan the net and put together a solution of my own. It was a mix of extension...

Read More

Rewrite project - requirements SWAT team

In my current project we have had a problem. The project is a “rewrite” project that shall “convert” a VB6 application into a VB.NET version of it. I put those words in quotes for a reason; here-in lies much of our problem in my mind. From the business-side of the project this has been viewed as technical problem and project. It’s a 1:1 conversion (the word “re-compile” has been used at more than one occasion). We all know that this is not the case. And even if it was that simple and you actually could do a 1:1 conversion it’s a waste of time. But that’s another story. In any case, we have had problem to get the business to engage in our project. (When I say business here it refers to people with the knowledge and power to decide on what the system should do). And that’s not the...

Read More

TF203007 Cannot create the label because the version controlled item […] already exists or has been specified more than once

OK – I just broke my old “longest blog post title” but this was a problem we ran into today.

As I understand the message some kind of duplication has taken place, but I don’t know what to do about it. Well I found this on a msdn-forum:

This error is cause by one of your developer was deleted file and added exactly same file back in instead using undeleted feature, and in the backend database, TFS give this file new file id which has exactly same server path; therefore, when you are trying to label, it throws an exception which complaining file already existed. To work around this issue, you have to manually open label and remove […] Then you should be able to label again.

OK. One of those - “That’s strange, but it works”. Thank you AndyPham.

Read More