Есть ли способ включить Fitnesse в код C ++? - PullRequest
6 голосов
/ 06 октября 2011

Я пытаюсь использовать Fitnesse для взаимодействия с некоторым кодом C ++, но файл проекта Fit Cpp, представленный на сайте fitnesse.org, не работает (это VC ++ 6, которого у меня нет, но у меня есть Visual Studio 2005 и 2008). Я даже не могу открыть файл решения в VS2005 или VS2008 (возможно, потому что он был создан в VC ++ 6?).

Кто-нибудь смог заставить это работать? Есть ли способ, которым я могу написать тестовое приспособление в C #, которое взаимодействует с кодом C ++? Если да, то как мне это сделать?

Вот сайт с кодом: http://fitnesse.org/FrontPage.FitServers.CppFit.CppTestTools.SetUpCppTestTools

В идеале я бы хотел работать над этим в Visual Studio и избегать cygwin. Должен ли я просто укусить пулю и пойти с Cygwin ... не уверен, что это будет работать тоже ... не пытался.

Любая помощь будет высоко ценится. Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 13 октября 2011

Использование C ++ / CLI - один из вариантов.Таким образом, вы можете использовать fitSharp в качестве моста от FitNesse к вашему коду фикстуры, но ваш код фикстуры может напрямую вызываться в C ++.

Вот простой пример тестирования класса Calculator.Во-первых, вот код C ++, который мы хотим протестировать:

class Calculator
{
  public:
    int Add(int x, int y)
    {
      return x + y;
    }
};

, а вот код фиксации C ++ / CLI:

public ref class CalculatorFixture
{
  public:
    property int X;
    property int Y;
    property int Z;

    void Execute()
    {
      Calculator calculator;
      Z = calculator.Add(X,Y);
    }
};

Вики-страница FitNesse будет выглядеть следующим образом:

!define TEST_SYSTEM {slim}
!define COMMAND_PATTERN {%m -r fitSharp.Slim.Service.Runner,C:\fitnesse\fitsharp\fitsharp.dll %p}
!define TEST_RUNNER {C:\fitnesse\fitsharp\Runner.exe}

!path c:\CalculatorFixture.dll

!|CalculatorFixture|
|X         |Y         |Z?        |
|2         |2         |4         |
|3         |4         |7         |

Одной из проблем, о которых следует помнить, является то, что библиотеки C ++ / CLI, как правило, являются либо 32-разрядными, либо 64-разрядными, тогда как для запуска fitSharp используется «любой процессор».Поэтому, если вы соберете свою C ++ / CLI DLL как 32-битную и попытаетесь использовать fitSharp с ней в 64-битной ОС, вы получите ошибку «неправильный формат».В этом случае либо создайте C ++ / CLI DLL как 64-битную версию, либо используйте corflags, чтобы заставить fitsharp runner (Runner.exe) быть 32-битной.

0 голосов
/ 13 октября 2011

Еще в VC6 раз не было файлов решений. Вместо этого VC6 использовал рабочие пространства, хранящиеся в файлах .dsw. Файлы проекта были .dsp.

Если вы откроете .dsw или .dsp в более новой Visual Studio, вам будет предложено преобразовать его, что приведет к созданию новых файлов .sln и .vcproj, созданных для проекта. Я преобразовал много сложных проектов из VC6 в VS 2005, 2008 и 2010, по моему опыту, преобразование работает довольно надежно. Если есть какие-либо проблемы с преобразованием, VS покажет вам это в журнале преобразования.

...