gr682_bpv 4 gadi atpakaļ
vecāks
revīzija
0e7a1e07fd

+ 6 - 0
BorisProject.sln

@@ -5,6 +5,8 @@ VisualStudioVersion = 16.0.30804.86
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BorisProject", "BorisProject\BorisProject.csproj", "{194767AA-C8E5-456B-8616-EE40518747AA}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTestProject1", "UnitTestProject1\UnitTestProject1.csproj", "{37C97A34-B72C-4964-A55A-C7F76B93051F}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -15,6 +17,10 @@ Global
 		{194767AA-C8E5-456B-8616-EE40518747AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{194767AA-C8E5-456B-8616-EE40518747AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{194767AA-C8E5-456B-8616-EE40518747AA}.Release|Any CPU.Build.0 = Release|Any CPU
+		{37C97A34-B72C-4964-A55A-C7F76B93051F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{37C97A34-B72C-4964-A55A-C7F76B93051F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{37C97A34-B72C-4964-A55A-C7F76B93051F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{37C97A34-B72C-4964-A55A-C7F76B93051F}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

+ 29 - 0
BorisProject/MainWindow.xaml.cs

@@ -86,5 +86,34 @@ namespace BorisProject
         {
             Application.Current.Shutdown();
         }
+
+
+
+
+
+        //Тест
+        public bool Auth(string login, string password)
+        {
+            SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=boris;Integrated Security=True");
+            con.Open();
+            SqlCommand cmd = new SqlCommand("Select * from Trener where Login ='" + login.ToString() + "'  and Password ='" + password.ToString() + "'", con);
+            cmd.CommandType = CommandType.Text;
+            SqlDataAdapter adapter = new SqlDataAdapter();
+            adapter.SelectCommand = cmd;
+            DataSet dataSet = new DataSet();
+            adapter.Fill(dataSet);
+            if (dataSet.Tables[0].Rows.Count > 0)
+            {
+                con.Close();
+                MessageBox.Show("Вы авторизованы");
+                return true;
+            }
+            else
+            {
+                con.Close();
+                MessageBox.Show("Ошибка логина/пароля");
+                return false;
+            }
+        }
     }
 }

+ 8 - 8
BorisProject/TrenerWindow.xaml

@@ -24,17 +24,17 @@
         <Button Content="Тренировки" HorizontalAlignment="Left" VerticalAlignment="Top" Width="118" Height="53" Margin="0,53,0,0" Click="trenirovka_Click"/>
         <Grid Name="trenirovka" Visibility="Hidden" Margin="118,0,0,0" Background="#FFE0CCCC">
             <Label Content="Тренировки" FontSize="25" HorizontalAlignment="Left" Margin="251,63,0,0" VerticalAlignment="Top" Width="184"/>
-            <Label Content="Код тренировки:" HorizontalAlignment="Left" Margin="65,170,0,0" VerticalAlignment="Top"/>
+            <Label Content="Код тренировки:" HorizontalAlignment="Left" Margin="341,216,0,0" VerticalAlignment="Top"/>
             <Label Content="Адрес тренировки:" HorizontalAlignment="Left" Margin="65,201,0,0" VerticalAlignment="Top"/>
             <Label Content="Дата тренировки:" HorizontalAlignment="Left" Margin="65,232,0,0" VerticalAlignment="Top"/>
-            <TextBox Name="kodtrentxt" HorizontalAlignment="Left" Height="23" Margin="172,173,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
-            <TextBox Name="adrestrentxt" HorizontalAlignment="Left" Height="23" Margin="180,204,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
+            <TextBox Name="kodtrentxt" MaxLength="10" HorizontalAlignment="Left" Height="23" Margin="448,218,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="55"/>
+            <TextBox Name="adrestrentxt" MaxLength="20" HorizontalAlignment="Left" Height="23" Margin="180,204,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/>
             <DatePicker Name="datetrenpic" HorizontalAlignment="Left" Margin="172,234,0,0" VerticalAlignment="Top"/>
-            <DataGrid HorizontalAlignment="Left" Height="187" Margin="291,253,0,0" VerticalAlignment="Top" Width="381"/>
-            <Button Content="Добавить" HorizontalAlignment="Left" Margin="87,283,0,0" VerticalAlignment="Top" Width="78" Height="22"/>
-            <Button Content="Редактировать" HorizontalAlignment="Left" Margin="81,310,0,0" VerticalAlignment="Top" Width="91" Height="28"/>
-            <Button Content="Удалить" HorizontalAlignment="Left" Margin="86,343,0,0" VerticalAlignment="Top" Width="81" Height="26"/>
-            <Button Content="Сформировать таблицу" HorizontalAlignment="Left" Margin="471,201,0,0" VerticalAlignment="Top" Width="143" Height="35"/>
+            <DataGrid Name="trendata" HorizontalAlignment="Left" Height="187" Margin="291,253,0,0" VerticalAlignment="Top" Width="381"/>
+            <Button Content="Добавить" HorizontalAlignment="Left" Margin="87,283,0,0" VerticalAlignment="Top" Width="78" Height="22" Click="AddTrenirovka_Click"/>
+            <Button Content="Редактировать" HorizontalAlignment="Left" Margin="81,310,0,0" VerticalAlignment="Top" Width="91" Height="28" Click="UpdateTrenirovka_Click"/>
+            <Button Content="Удалить" HorizontalAlignment="Left" Margin="86,343,0,0" VerticalAlignment="Top" Width="81" Height="26" Click="DeleteTrenirovka_Click"/>
+            <Button Content="Сформировать таблицу" HorizontalAlignment="Left" Margin="529,211,0,0" VerticalAlignment="Top" Width="143" Height="35" Click="Showtabletrenirovka_Click"/>
         </Grid>
         <Button Content="Тренирующиеся" HorizontalAlignment="Left" VerticalAlignment="Top" Width="118" Height="53" Margin="0,106,0,0" Click="chel_Click"/>
         <Grid Name="chel" Visibility="Hidden" Margin="118,0,0,0" Background="#FFE0CCCC">

+ 178 - 4
BorisProject/TrenerWindow.xaml.cs

@@ -58,8 +58,8 @@ namespace BorisProject
             try
             {
                 con.Open();
-                string rke = "SELECT ID_sorev,Title,Place,[Date],Trener.LastName From Sorevnovania inner join Trener on Trener.ID_trener = Sorevnovania.ID_trener group by ID_sorev,Title,Place,[Date],Trener.ID_trener,Trener.LastName having Trener.ID_trener = '"+txtidtrener.Text+"'";
-                SqlDataAdapter dataAdapter = new SqlDataAdapter(rke, con);
+                string sql = "SELECT ID_sorev,Title,Place,[Date],Trener.LastName From Sorevnovania inner join Trener on Trener.ID_trener = Sorevnovania.ID_trener group by ID_sorev,Title,Place,[Date],Trener.ID_trener,Trener.LastName having Trener.ID_trener = '" + txtidtrener.Text + "'";
+                SqlDataAdapter dataAdapter = new SqlDataAdapter(sql, con);
                 DataTable data = new DataTable("Sorevnovania");
                 dataAdapter.Fill(data);
                 datasorev.ItemsSource = data.DefaultView;
@@ -92,8 +92,8 @@ namespace BorisProject
             try
             {
                 con.Open();
-                string rke = "SELECT PeopleTrain.FirstName,PeopleTrain.LastName,PeopleTrain.MiddleName,PeopleTrain.DOB,Trener.LastName From PeopleTrain inner join Trener on Trener.ID_trener = PeopleTrain.ID_Trener group by PeopleTrain.FirstName,PeopleTrain.LastName,PeopleTrain.MiddleName,PeopleTrain.DOB,Trener.LastName,Trener.ID_trener having Trener.ID_trener = '"+txtidtrener.Text+"'";
-                SqlDataAdapter dataAdapter = new SqlDataAdapter(rke, con);
+                string sql = "SELECT PeopleTrain.FirstName,PeopleTrain.LastName,PeopleTrain.MiddleName,PeopleTrain.DOB,Trener.LastName From PeopleTrain inner join Trener on Trener.ID_trener = PeopleTrain.ID_Trener group by PeopleTrain.FirstName,PeopleTrain.LastName,PeopleTrain.MiddleName,PeopleTrain.DOB,Trener.LastName,Trener.ID_trener having Trener.ID_trener = '" + txtidtrener.Text + "'";
+                SqlDataAdapter dataAdapter = new SqlDataAdapter(sql, con);
                 DataTable data = new DataTable("TrainPeople");
                 dataAdapter.Fill(data);
                 datapeople.ItemsSource = data.DefaultView;
@@ -111,5 +111,179 @@ namespace BorisProject
                 MessageBox.Show("Ошибка");
             }
         }
+
+        void showtabletrenirovka()
+        {
+            try
+            {
+                con.Open();
+                string sql = "SELECT ID_Trenirovka,Adres,Date From Trenirovka Where ID_Trener = '" + txtidtrener.Text + "'";
+                SqlDataAdapter dataAdapter = new SqlDataAdapter(sql, con);
+                DataTable data = new DataTable("Trenirovka");
+                dataAdapter.Fill(data);
+                trendata.ItemsSource = data.DefaultView;
+                dataAdapter.Update(data);
+                trendata.Columns[0].Header = "КодТренировки";
+                trendata.Columns[1].Header = "Адрес";
+                trendata.Columns[2].Header = "Дата";
+                con.Close();
+            }
+            catch
+            {
+                con.Close();
+                MessageBox.Show("Ошибка");
+            }
+        }
+
+        private void AddTrenirovka_Click(object sender, RoutedEventArgs e)
+        {
+            if (adrestrentxt.Text == "" || datetrenpic.SelectedDate == null)
+            {
+                MessageBox.Show("Пустые поля");
+            }
+            else
+            {
+                try
+                {
+                    con.Open();
+                    string sql = "INSERT INTO Trenirovka (Adres,Date,ID_Trener)  VALUES('" + adrestrentxt.Text + "','" + datetrenpic.SelectedDate + "','" + txtidtrener.Text + "')";
+                    SqlDataAdapter dataAdapter = new SqlDataAdapter(sql, con);
+                    dataAdapter.SelectCommand.ExecuteNonQuery();
+                    con.Close();
+                    MessageBox.Show("Тренировка добавлена!");
+                    showtabletrenirovka();
+                }
+                catch (Exception)
+                {
+                    con.Close();
+                    MessageBox.Show("Ошибка!");
+                }
+            }
+        }
+
+        private void Showtabletrenirovka_Click(object sender, RoutedEventArgs e)
+        {
+            showtabletrenirovka();
+        }
+
+        private void UpdateTrenirovka_Click(object sender, RoutedEventArgs e)
+        {
+            if (kodtrentxt.Text == "")
+            {
+                MessageBox.Show("ID поле пустое");
+            }
+            else
+            {
+                try
+                {
+                    con.Open();
+                    string sql = "Update Trenirovka set Adres ='" + adrestrentxt.Text + "', Date = '" + datetrenpic.SelectedDate + "' where ID_Trenirovka = '" + kodtrentxt.Text + "'";
+                    SqlDataAdapter dataAdapter = new SqlDataAdapter(sql, con);
+                    dataAdapter.SelectCommand.ExecuteNonQuery();
+                    con.Close();
+                    MessageBox.Show("Тренировка изменена");
+                    showtabletrenirovka();
+                }
+                catch (Exception)
+                {
+                    con.Close();
+                    MessageBox.Show("Ошибка");
+                }
+            }
+        }
+
+        private void DeleteTrenirovka_Click(object sender, RoutedEventArgs e)
+        {
+            if (kodtrentxt.Text == "")
+            {
+                MessageBox.Show("ID поле пустое");
+            }
+            else
+            {
+                try
+                {
+                    con.Open();
+                    string sql = "DELETE FROM Trenirovka WHERE ID_Trenirovka = '" + kodtrentxt.Text + "'";
+                    SqlDataAdapter dataAdapter = new SqlDataAdapter(sql, con);
+                    dataAdapter.SelectCommand.ExecuteNonQuery();
+                    con.Close();
+                    MessageBox.Show("Тренировка удалена");
+                    showtabletrenirovka();
+                }
+                catch
+                {
+                    con.Close();
+                    MessageBox.Show("Ошибка");
+                }
+            }
+        }
+
+
+
+
+
+        //тесты
+        public bool Add(string adres, string date, string id)
+        {
+            try
+            {
+                SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=boris;Integrated Security=True");
+                con.Open();
+                string sql = "INSERT INTO Trenirovka (Adres,Date,ID_Trener) VALUES('" + adres.ToString() + "','" + date.ToString() + "','" + id.ToString() + "')";
+                SqlDataAdapter dataAdapter = new SqlDataAdapter(sql, con);
+                dataAdapter.SelectCommand.ExecuteNonQuery();
+                con.Close();
+                MessageBox.Show("Запись произведена");
+                return true;
+            }
+            catch (Exception)
+            {
+                MessageBox.Show("Ошибка");
+                return false;
+            }
+        }
+
+
+        public bool Update(string adres, string date, string id)
+        {
+            try
+            {
+                SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=boris;Integrated Security=True");
+                con.Open();
+                string sql = "Update Trenirovka set Adres ='" + adres.ToString() + "', Date = '" + date.ToString() + "' where ID_Trenirovka = '" + id.ToString() + "'";
+                SqlDataAdapter dataAdapter = new SqlDataAdapter(sql, con);
+                dataAdapter.SelectCommand.ExecuteNonQuery();
+                con.Close();
+                MessageBox.Show("Тренировка изменена");
+                return true;
+            }
+            catch (Exception)
+            {
+                MessageBox.Show("Ошибка");
+                return false;
+            }
+        }
+
+
+        public bool Delete(string id)
+        {
+            try
+            {
+                SqlConnection con = new SqlConnection("Data Source=localhost;Initial Catalog=boris;Integrated Security=True");
+                con.Open();
+                string sql = "DELETE FROM Trenirovka WHERE ID_Trenirovka = '" + id.ToString() + "'";
+                SqlDataAdapter dataAdapter = new SqlDataAdapter(sql, con);
+                dataAdapter.SelectCommand.ExecuteNonQuery();
+                con.Close();
+                MessageBox.Show("Тренировка удалена");
+                return true;
+            }
+            catch (Exception)
+            {
+                MessageBox.Show("Ошибка");
+                return false;
+            }
+        }
+
     }
 }

+ 20 - 0
UnitTestProject1/Properties/AssemblyInfo.cs

@@ -0,0 +1,20 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("UnitTestProject1")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("UnitTestProject1")]
+[assembly: AssemblyCopyright("Copyright ©  2021")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+[assembly: ComVisible(false)]
+
+[assembly: Guid("37c97a34-b72c-4964-a55a-c7f76b93051f")]
+
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]

+ 46 - 0
UnitTestProject1/UnitTest1.cs

@@ -0,0 +1,46 @@
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using System;
+using BorisProject;
+
+namespace UnitTestProject1
+{
+    [TestClass]
+    public class UnitTest1
+    {
+        [TestMethod]
+        public void ProverkaVhoda()
+        {
+            var page = new MainWindow();
+            Assert.IsTrue(page.Auth("kokin", "kokin"));
+            Assert.IsTrue(page.Auth("bihtpet", "12345"));
+            Assert.IsFalse(page.Auth("", ""));
+            Assert.IsFalse(page.Auth("vadim", "ttttt"));
+        }
+
+        [TestMethod]
+        public void ProverkaAdd()
+        {
+            var page = new TrenerWindow();
+            Assert.IsTrue(page.Add("ТТИТ", "24.01.2005","2"));
+            Assert.IsFalse(page.Add("ТГУ", "12345","2"));
+        }
+
+        [TestMethod]
+        public void ProverkaUpdate()
+        {
+            var page = new TrenerWindow();
+            Assert.IsTrue(page.Update("Спортзал", "24.01.2005", "6"));
+            Assert.IsFalse(page.Update("Парк", "дата", "8"));
+        }
+
+        [TestMethod]
+        public void ProverkaDelete()
+        {
+            var page = new TrenerWindow();
+            Assert.IsTrue(page.Delete("5"));
+            Assert.IsTrue(page.Delete("1"));
+            Assert.IsTrue(page.Delete("2"));
+            Assert.IsTrue(page.Delete("3"));
+        }
+    }
+}

+ 77 - 0
UnitTestProject1/UnitTestProject1.csproj

@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="..\packages\MSTest.TestAdapter.2.1.1\build\net45\MSTest.TestAdapter.props" Condition="Exists('..\packages\MSTest.TestAdapter.2.1.1\build\net45\MSTest.TestAdapter.props')" />
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{37C97A34-B72C-4964-A55A-C7F76B93051F}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>UnitTestProject1</RootNamespace>
+    <AssemblyName>UnitTestProject1</AssemblyName>
+    <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">15.0</VisualStudioVersion>
+    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages</ReferencePath>
+    <IsCodedUITest>False</IsCodedUITest>
+    <TestProjectType>UnitTest</TestProjectType>
+    <NuGetPackageImportStamp>
+    </NuGetPackageImportStamp>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+      <HintPath>..\packages\MSTest.TestFramework.2.1.1\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+      <HintPath>..\packages\MSTest.TestFramework.2.1.1\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll</HintPath>
+    </Reference>
+    <Reference Include="PresentationCore" />
+    <Reference Include="PresentationFramework" />
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+    <Reference Include="WindowsBase" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="UnitTest1.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="packages.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\BorisProject\BorisProject.csproj">
+      <Project>{194767aa-c8e5-456b-8616-ee40518747aa}</Project>
+      <Name>BorisProject</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" />
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
+    <PropertyGroup>
+      <ErrorText>Данный проект ссылается на пакеты NuGet, отсутствующие на этом компьютере. Используйте восстановление пакетов NuGet, чтобы скачать их.  Дополнительную информацию см. по адресу: http://go.microsoft.com/fwlink/?LinkID=322105. Отсутствует следующий файл: {0}.</ErrorText>
+    </PropertyGroup>
+    <Error Condition="!Exists('..\packages\MSTest.TestAdapter.2.1.1\build\net45\MSTest.TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.2.1.1\build\net45\MSTest.TestAdapter.props'))" />
+    <Error Condition="!Exists('..\packages\MSTest.TestAdapter.2.1.1\build\net45\MSTest.TestAdapter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.2.1.1\build\net45\MSTest.TestAdapter.targets'))" />
+  </Target>
+  <Import Project="..\packages\MSTest.TestAdapter.2.1.1\build\net45\MSTest.TestAdapter.targets" Condition="Exists('..\packages\MSTest.TestAdapter.2.1.1\build\net45\MSTest.TestAdapter.targets')" />
+</Project>

+ 5 - 0
UnitTestProject1/packages.config

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="MSTest.TestAdapter" version="2.1.1" targetFramework="net472" />
+  <package id="MSTest.TestFramework" version="2.1.1" targetFramework="net472" />
+</packages>