All Projects → getgauge → gauge-csharp

getgauge / gauge-csharp

Licence: GPL-3.0 license
Csharp runner for Gauge

Programming Languages

C#
18002 projects
powershell
5483 projects
F#
602 projects

Projects that are alternatives of or similar to gauge-csharp

WatsonSyslogServer
C# Syslog Server
Stars: ✭ 18 (-47.06%)
Mutual labels:  nuget, mono
Fo Dicom
Fellow Oak DICOM for .NET, .NET Core, Universal Windows, Android, iOS, Mono and Unity
Stars: ✭ 674 (+1882.35%)
Mutual labels:  nuget, mono
Mvvmcross
The .NET MVVM framework for cross-platform solutions, including Xamarin.iOS, Xamarin.Android, Windows and Mac.
Stars: ✭ 3,594 (+10470.59%)
Mutual labels:  nuget, mono
Paket.Unity3D
An extension for the Paket dependency manager that enables the integration of NuGet dependencies into Unity3D projects.
Stars: ✭ 42 (+23.53%)
Mutual labels:  nuget, mono
Steamkit
SteamKit2 is a .NET library designed to interoperate with Valve's Steam network. It aims to provide a simple, yet extensible, interface to perform various actions on the network.
Stars: ✭ 1,926 (+5564.71%)
Mutual labels:  nuget, mono
Opengl.net
Modern OpenGL bindings for C#.
Stars: ✭ 473 (+1291.18%)
Mutual labels:  nuget, mono
Ini Parser
Read/Write an INI file the easy way!
Stars: ✭ 643 (+1791.18%)
Mutual labels:  nuget, mono
Centrifuge
Cross-platform runtime mod loader and API for any Unity-based game. Supports Unity 5 and up!
Stars: ✭ 18 (-47.06%)
Mutual labels:  nuget, mono
Zipstorer
A Pure C# Class to Store Files in Zip
Stars: ✭ 139 (+308.82%)
Mutual labels:  nuget, mono
Paket
A dependency manager for .NET with support for NuGet packages and Git repositories.
Stars: ✭ 1,787 (+5155.88%)
Mutual labels:  nuget, mono
Watsontcp
WatsonTcp is the easiest way to build TCP-based clients and servers in C#.
Stars: ✭ 209 (+514.71%)
Mutual labels:  nuget, mono
Megaapiclient
MegaApiClient is a C# .Net library to access http://mega.co.nz / http://mega.nz cloud storage and file hosting service.
Stars: ✭ 151 (+344.12%)
Mutual labels:  nuget, mono
Centrifuge
Cross-platform runtime mod loader and API for any Unity-based game. Supports Unity 5 and up!
Stars: ✭ 27 (-20.59%)
Mutual labels:  nuget, mono
Translit
C# library for cyrillic-latin transliteration (support only slavik languages) by GOST 7.79-2000 (ISO 9).
Stars: ✭ 47 (+38.24%)
Mutual labels:  nuget
HashDepot
.NET library for xxHash, FNV, MurmurHash3 and SipHash algorithms
Stars: ✭ 107 (+214.71%)
Mutual labels:  nuget
MessageBox.Avalonia
Messagebox for AvaloniaUI
Stars: ✭ 222 (+552.94%)
Mutual labels:  nuget
Apos.Shapes
Shape rendering in MonoGame.
Stars: ✭ 21 (-38.24%)
Mutual labels:  nuget
Nancy
Lightweight, low-ceremony, framework for building HTTP based services on .Net and Mono
Stars: ✭ 7,170 (+20988.24%)
Mutual labels:  mono
UniversalUnityHooks
A framework designed to hook into and modify methods in unity games via dlls
Stars: ✭ 78 (+129.41%)
Mutual labels:  mono
MonoAGS
AGS (Adventure Game Studio) reimagined in Mono
Stars: ✭ 26 (-23.53%)
Mutual labels:  mono

Gauge-csharp [DEPRECATED]

Windows Linux / OS X (Mono)
Build status Build Status

Contributor Covenant

This project adds C# language plugin for gauge.

Deprecation Notice

This plugin is deprecated because Microsoft is ending support for .NET Framework. Refer https://devblogs.microsoft.com/dotnet/net-core-is-the-future-of-net.

Please use the Gauge Dotnet plugin instead.

Porting Gauge-CSharp projects to Gauge-Dotnet

Gauge-CSharp plugin uses and relies on Microsoft .NET framework for execution. Gauge-Dotnet plugin relies on .NET Core.

In order to port your .NET Framework project to .NET Core, please refer to this guide: https://docs.microsoft.com/en-us/dotnet/core/porting/

Additionally, you'll need to point your gauge project to use gauge-dotnet runner.

This can be done by editing the manifest.json file located in the project root location.

  • Open manifest.json in any text editor.
  • Locate the line with text: "Language": "csharp",
  • Change the located line to "Language": "dotnet",
  • Save the file

Now you should be able to run your project using gauge-dotnet plugin.

Note that you'll have to ensure that the project file (.csproj) and it's structure meet the recommendations of .NET Core.

Getting started

Pre-requisite

Installation

gauge install csharp

Create a gauge-csharp project

gauge init csharp

Run tests

gauge run specs

Alternate Installation options

Install specific version

  • Installing specific version
gauge install csharp --version 0.10.1

Offline installation

gauge install csharp --file gauge-csharp-0.10.1.zip

Build from Source

The plugin is authored in C#. Gauge is authored in golang. These are independent processes talking to each other over TCP on port GAUGE_INTERNAL_PORT (env variable) using Protobuf.

Development Environment Setup
Additional Requirements

Apart from Gauge and [.NET Framework], you will need

Windows
  • Use BoxStarter to setup Windows box.
    • Install Windows
    • Hit http://bit.ly/20pMrXY from Internet Explorer/Edge.
    • Install Visual Studio and Resharper separately (You could consider installing from an ISO).
Linux

For building and unit testing you only need mono.

Terminologies
Gauge Lib

Lib is a dll that brings in Gauge's data types to C#. It is hosted in Nuget.

Read more about Lib here.

Gauge Core

Core is a dll that brings in Gauge's API and connection to C#, and also holds the protobuf communication code. It is hosted in Nuget, and is not listed in the search results. This package is used by Lib and Runner only.

Read more about Core here.

Gauge CSharp Runner

Runner is an executable that is invoked by Gauge Core. The Runner acts a bridge between C# test code and Gauge's API.

Read more about Runner here.

Gauge-Proto

This is a submodule of the repository https://github.com/getgauge/gauge-proto. This repository holds the .proto files that act as contracts between Gauge and the plugins. This submodule needs to be fetched to generate the protobuf classes.

Setup
Lib

The Lib is a reference that you can add to your test project, as you would do with any Nuget package.

You will need Gauge and Gauge-csharp plugin installed before installing Lib.

Build

On mono:

./build.sh CopyBinaries

On Windows

build.cmd CopyBinaries
Regenerate the API messages (protocol buffer api changes)

Update the submodule and run the gen-proto command:

git submodule update
run.bat gen-proto
Tests
Unit/Integration Tests

On mono:

./build.sh RunTests

On Windows

build.cmd RunTests
Functional Tests

For running functional tests

  • gauge
  • java 1.8
  • maven

Choose from the below targets (whichever is applicable)

Target Purpose
FunctionalTests Runs all functional tests without unimplemented tag
FunctionalTestsP Same as FunctionalTests but runs in parallel
FunctionalTestsUnimplemented Runs all functional tests with unimplemented tag, ideally these should fail
FunctionalTestsPUnimplemented Same as FunctionalTestsUnimplemented but runs in parallel
BuildInstallFT Builds, runs Unit and Integration tests, installs Gauge-CSharp from artifact, and triggers FunctionalTestsP

On mono:

./build.sh <target>

On Windows:

build.cmd <target>
Package

On mono:

./build.sh Package

On Windows:

build.cmd Package

All artifacts are genereated in .\artifacts folder.

  • The plugin is zipped to artifacts/gauge-csharp/gauge-csharp-<runner-version>.zip, where <runner-version> is from top of CHANGELOG.md file.
  • The Lib Nuget package is put at artifacts/gauge-csharp-lib/Gauge.CSharp.Lib.<lib-version>.nupkg, where <lib-version> is from top of Lib/CHANGELOG.md file.
  • The Core Nuget package is put at artifacts/gauge-csharp-core/Gauge.CSharp.Core.<core-version>.nupkg, where <core-version> is from top of Core/CHANGELOG.md file.
Zip

Zip distribution in artifacts/gauge-csharp/gauge-csharp-<runner-version>.zip can be created with On mono:

./build.sh Zip

On Windows

build.cmd Zip
Install the plugin

To install a local version of the plugin, choose from the below targets (whichever is applicable)

Target Purpose
Install Installs Runner from generated Artifact
ForceInstall Same as Install, but removes conflicting version if already installed

On mono:

./build.sh <target>

On Windows:

build.cmd <target>

License

GNU Public License version 3.0 Gauge-csharp is released under GNU Public License version 3.0

Copyright

Copyright 2019 ThoughtWorks, Inc.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].