Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 1 addition & 11 deletions Reqnroll.VisualStudio.ProjectTemplate/ProjectTemplate.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />$if$ ('$unittestframework$' == 'xUnit')
<PackageReference Include="Reqnroll.xUnit" Version="2.2.1" />
<PackageReference Include="xunit" Version="2.8.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.1" />$endif$$if$ ('$unittestframework$' == 'NUnit')
<PackageReference Include="Reqnroll.NUnit" Version="2.2.1" />
<PackageReference Include="nunit" Version="3.14.0" />
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />$endif$$if$ ('$unittestframework$' == 'MSTest')
<PackageReference Include="Reqnroll.MsTest" Version="2.2.1" />
<PackageReference Include="MSTest.TestAdapter" Version="3.4.3" />
<PackageReference Include="MSTest.TestFramework" Version="3.4.3" />$endif$$if$ ('$fluentassertionsincluded$' == 'True')
<PackageReference Include="FluentAssertions" Version="6.12.0" />$endif$
$nugetpackagereferences$
</ItemGroup>

<ItemGroup>
Expand Down
60 changes: 34 additions & 26 deletions Reqnroll.VisualStudio.UI/Dialogs/AddNewReqnrollProjectDialog.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@
BasedOn="{StaticResource VsCloseButton}">
<Setter Property="Width" Value="46" />
<Setter Property="Height" Value="33" />
<Setter Property="AutomationProperties.Name" Value="{Binding ToolTip,RelativeSource={RelativeSource Self}}" />
<Setter Property="HorizontalAlignment" Value="Right" />
<Setter Property="VerticalAlignment" Value="Top" />
<Setter Property="BorderBrush" Value="#00FFFFFF" />
Expand Down Expand Up @@ -217,41 +216,50 @@
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>

<StackPanel Grid.Row="0" Grid.Column="0">
<Label>Framework</Label>
<ComboBox x:Name="DotNetFrameworkComboBox" SelectedValuePath="Tag" IsEditable="True" IsReadOnly="True"
Margin="0,0,0,0" Padding="8,8,8,8" SelectedValue="{Binding DotNetFramework}"
IsSynchronizedWithCurrentItem="True">
<ComboBoxItem Tag="net462">.NET Framework 4.6.2</ComboBoxItem>
<ComboBoxItem Tag="net47">.NET Framework 4.7</ComboBoxItem>
<ComboBoxItem Tag="net471">.NET Framework 4.7.1</ComboBoxItem>
<ComboBoxItem Tag="net472">.NET Framework 4.7.2</ComboBoxItem>
<ComboBoxItem Tag="net48">.NET Framework 4.8</ComboBoxItem>
<ComboBoxItem Tag="net48">.NET Framework 4.8.1</ComboBoxItem>
<ComboBoxItem Tag="net6.0">.NET 6.0</ComboBoxItem>
<ComboBoxItem Tag="net7.0">.NET 7.0</ComboBoxItem>
<ComboBoxItem Tag="net8.0" IsSelected="True">.NET 8.0</ComboBoxItem>
<ComboBoxItem Tag="net9.0">.NET 9.0</ComboBoxItem>
</ComboBox>
<ComboBox x:Name="DotNetFrameworkComboBox"
IsEditable="True"
IsReadOnly="True"
Margin="0,0,0,0"
Padding="8,8,8,8"
ItemsSource="{Binding DotNetFrameworks}"
DisplayMemberPath="Label"
SelectedValue="{Binding DotNetFramework}"
IsSynchronizedWithCurrentItem="True" />
</StackPanel>

<StackPanel Grid.Row="1" Grid.Column="0">
<Label>Test Framework</Label>
<ComboBox x:Name="UnitTestFrameworkComboBox"
SelectedValuePath="Tag"
IsEditable="True"
IsReadOnly="True"
Margin="0,0,0,0"
Padding="8,8,8,8"
ItemsSource="{Binding TestFrameworks}"
SelectedValue="{Binding UnitTestFramework}"
IsSynchronizedWithCurrentItem="True"
SelectionChanged="TestFramework_SelectionChanged" />
<ComboBox x:Name="UnitTestFrameworkComboBox"
IsEditable="True"
IsReadOnly="True"
Margin="0,0,0,0"
Padding="8,8,8,8"
ItemsSource="{Binding UnitTestFrameworks}"
DisplayMemberPath="Label"
SelectedValue="{Binding UnitTestFramework}"
IsSynchronizedWithCurrentItem="True" />
</StackPanel>

<StackPanel Grid.Row="2" Grid.Column="0" Visibility="Collapsed">
<StackPanel Grid.Row="2" Grid.Column="0">
<Label Content="{Binding UnitTestFramework.Description, Mode=OneWay}" />
</StackPanel>

<StackPanel Grid.Row="3" Grid.Column="0" Orientation="Horizontal" VerticalAlignment="Center">
<Label VerticalAlignment="Center" Margin="0,0,5,0">More Information:</Label>
<TextBlock VerticalAlignment="Center">
<Hyperlink NavigateUri="{Binding UnitTestFramework.Url}" RequestNavigate="Hyperlink_RequestNavigate">
<Run Text="{Binding UnitTestFramework.Url, Mode=OneWay}"/>
</Hyperlink>
</TextBlock>
</StackPanel>

<StackPanel Grid.Row="4" Grid.Column="0" Visibility="Collapsed">
<CheckBox x:Name="FluentAssertionsCheckBox" Content="Add FluentAssertions library"
IsChecked="{Binding FluentAssertionsIncluded}" />
</StackPanel>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
#nullable disable
using System.Windows;
using System.Windows.Controls;
using System.Diagnostics;
using Microsoft.VisualStudio.Shell.Interop;
using Reqnroll.VisualStudio.UI.ViewModels;
using System.Windows;
using System.Windows.Navigation;

namespace Reqnroll.VisualStudio.UI.Dialogs;

Expand All @@ -16,25 +16,39 @@ public AddNewReqnrollProjectDialog()
InitializeComponent();
}

public AddNewReqnrollProjectDialog(AddNewReqnrollProjectViewModel viewModel, IVsUIShell vsUiShell = null) :
public AddNewReqnrollProjectDialog(AddNewReqnrollProjectViewModel viewModel, IVsUIShell? vsUiShell = null) :
base(vsUiShell)
{
ViewModel = viewModel;
InitializeComponent();
Loaded += AddNewReqnrollProjectDialog_LoadedAsync;
}

public AddNewReqnrollProjectViewModel ViewModel { get; }
public AddNewReqnrollProjectViewModel? ViewModel { get; }

#pragma warning disable VSTHRD100
private async void AddNewReqnrollProjectDialog_LoadedAsync(object sender, RoutedEventArgs e)
#pragma warning restore VSTHRD100
{
try
{
if (ViewModel != null)
await ViewModel.InitializeAsync();
}
catch (Exception ex)
{
Debug.WriteLine(ex, "Error during AddNewReqnrollProjectDialog_LoadedAsync");
}
}

private void CreateButton_Click(object sender, RoutedEventArgs e)
{
DialogResult = true;
Close();
}

private void TestFramework_SelectionChanged(object sender, SelectionChangedEventArgs e)
private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e)
{
if (e.AddedItems.Count == 0) return;
ViewModel.UnitTestFramework = e.AddedItems[0].ToString();
e.Handled = true;
OnLinkClicked(sender, e);
}
}
5 changes: 5 additions & 0 deletions Reqnroll.VisualStudio/Reqnroll.VisualStudio.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,13 @@
<DefineConstants>TRACE;</DefineConstants>
</PropertyGroup>

<ItemGroup>
<None Remove="Resources\TestFrameworkDescriptors.json" />
</ItemGroup>

<ItemGroup>
<EmbeddedResource Include="Analytics\InstrumentationKey.txt" />
<EmbeddedResource Include="Resources\TestFrameworkDescriptors.json" />
</ItemGroup>

<ItemGroup>
Expand Down
120 changes: 120 additions & 0 deletions Reqnroll.VisualStudio/Resources/TestFrameworkDescriptors.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
{
"testFrameworks": [
{
"tag": "xunit",
"label": "xUnit",
"description": "Use xUnit v2 test executor with Reqnroll",
"url": "https://xunit.net",
"dependencies": [
{
"name": "Reqnroll.xUnit",
"version": "2.4.1"
},
{
"name": "xunit",
"version": "2.8.1"
},
{
"name": "xunit.runner.visualstudio",
"version": "2.8.1"
}
]
},
{
"tag": "mstest",
"label": "MsTest",
"description": "Use MsTest v3 test executor with Reqnroll",
"url": "https://github.com/microsoft/testfx?tab=readme-ov-file",
"dependencies": [
{
"name": "Reqnroll.MsTest",
"version": "2.4.1"
},
{
"name": "MSTest.TestFramework",
"version": "3.4.3"
},
{
"name": "MSTest.TestAdapter",
"version": "3.4.3"
}
]
},
{
"tag": "nunit",
"label": "NUnit",
"description": "Use NUnit v3 test executor with Reqnroll",
"url": "https://nunit.org",
"dependencies": [
{
"name": "Reqnroll.NUnit",
"version": "2.4.1"
},
{
"name": "nunit",
"version": "3.14.0"
},
{
"name": "NUnit3TestAdapter",
"version": "4.5.0"
}
]
}
],
"dotNetFrameworks": [
{
"tag": "net462",
"label": ".NET Framework 4.6.2"
},
{
"tag": "net47",
"label": ".NET Framework 4.7"
},
{
"tag": "net471",
"label": ".NET Framework 4.7.1"
},
{
"tag": "net472",
"label": ".NET Framework 4.7.2"
},
{
"tag": "net48",
"label": ".NET Framework 4.8"
},
{
"tag": "net48",
"label": ".NET Framework 4.8.1"
},
{
"tag": "net6.0",
"label": ".NET 6.0"
},
{
"tag": "net7.0",
"label": ".NET 7.0"
},
{
"tag": "net8.0",
"label": ".NET 8.0",
"default": true
},
{
"tag": "net9.0",
"label": ".NET 9.0"
}
],
"validationFrameworks": [
{
"label": "FluentAssertions",
"description": "Use Fluent Assertions library with Reqnroll",
"url": "https://fluentassertions.com",
"dependencies": [
{
"name": "FluentAssertions",
"version": "8.3.0"
}
]
}
]
}
Loading
Loading