@@ -0,0 +1,41 @@ | |||||
| |||||
Microsoft Visual Studio Solution File, Format Version 12.00 | |||||
# Visual Studio Version 16 | |||||
VisualStudioVersion = 16.0.30804.86 | |||||
MinimumVisualStudioVersion = 10.0.40219.1 | |||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "B", "B\B.vcxproj", "{C9C2CED7-109C-41F8-A522-2BE7855A0D71}" | |||||
EndProject | |||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UnitTest1", "UnitTest1\UnitTest1.vcxproj", "{6F4C0F3A-8892-4407-B3F3-E22C659148C1}" | |||||
EndProject | |||||
Global | |||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | |||||
Debug|x64 = Debug|x64 | |||||
Debug|x86 = Debug|x86 | |||||
Release|x64 = Release|x64 | |||||
Release|x86 = Release|x86 | |||||
EndGlobalSection | |||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution | |||||
{C9C2CED7-109C-41F8-A522-2BE7855A0D71}.Debug|x64.ActiveCfg = Debug|x64 | |||||
{C9C2CED7-109C-41F8-A522-2BE7855A0D71}.Debug|x64.Build.0 = Debug|x64 | |||||
{C9C2CED7-109C-41F8-A522-2BE7855A0D71}.Debug|x86.ActiveCfg = Debug|Win32 | |||||
{C9C2CED7-109C-41F8-A522-2BE7855A0D71}.Debug|x86.Build.0 = Debug|Win32 | |||||
{C9C2CED7-109C-41F8-A522-2BE7855A0D71}.Release|x64.ActiveCfg = Release|x64 | |||||
{C9C2CED7-109C-41F8-A522-2BE7855A0D71}.Release|x64.Build.0 = Release|x64 | |||||
{C9C2CED7-109C-41F8-A522-2BE7855A0D71}.Release|x86.ActiveCfg = Release|Win32 | |||||
{C9C2CED7-109C-41F8-A522-2BE7855A0D71}.Release|x86.Build.0 = Release|Win32 | |||||
{6F4C0F3A-8892-4407-B3F3-E22C659148C1}.Debug|x64.ActiveCfg = Debug|x64 | |||||
{6F4C0F3A-8892-4407-B3F3-E22C659148C1}.Debug|x64.Build.0 = Debug|x64 | |||||
{6F4C0F3A-8892-4407-B3F3-E22C659148C1}.Debug|x86.ActiveCfg = Debug|Win32 | |||||
{6F4C0F3A-8892-4407-B3F3-E22C659148C1}.Debug|x86.Build.0 = Debug|Win32 | |||||
{6F4C0F3A-8892-4407-B3F3-E22C659148C1}.Release|x64.ActiveCfg = Release|x64 | |||||
{6F4C0F3A-8892-4407-B3F3-E22C659148C1}.Release|x64.Build.0 = Release|x64 | |||||
{6F4C0F3A-8892-4407-B3F3-E22C659148C1}.Release|x86.ActiveCfg = Release|Win32 | |||||
{6F4C0F3A-8892-4407-B3F3-E22C659148C1}.Release|x86.Build.0 = Release|Win32 | |||||
EndGlobalSection | |||||
GlobalSection(SolutionProperties) = preSolution | |||||
HideSolutionNode = FALSE | |||||
EndGlobalSection | |||||
GlobalSection(ExtensibilityGlobals) = postSolution | |||||
SolutionGuid = {B0E8A81B-EFF0-4230-AA65-F9B19FF65BF3} | |||||
EndGlobalSection | |||||
EndGlobal |
@@ -0,0 +1,150 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |||||
<ItemGroup Label="ProjectConfigurations"> | |||||
<ProjectConfiguration Include="Debug|Win32"> | |||||
<Configuration>Debug</Configuration> | |||||
<Platform>Win32</Platform> | |||||
</ProjectConfiguration> | |||||
<ProjectConfiguration Include="Release|Win32"> | |||||
<Configuration>Release</Configuration> | |||||
<Platform>Win32</Platform> | |||||
</ProjectConfiguration> | |||||
<ProjectConfiguration Include="Debug|x64"> | |||||
<Configuration>Debug</Configuration> | |||||
<Platform>x64</Platform> | |||||
</ProjectConfiguration> | |||||
<ProjectConfiguration Include="Release|x64"> | |||||
<Configuration>Release</Configuration> | |||||
<Platform>x64</Platform> | |||||
</ProjectConfiguration> | |||||
</ItemGroup> | |||||
<PropertyGroup Label="Globals"> | |||||
<VCProjectVersion>16.0</VCProjectVersion> | |||||
<Keyword>Win32Proj</Keyword> | |||||
<ProjectGuid>{c9c2ced7-109c-41f8-a522-2be7855a0d71}</ProjectGuid> | |||||
<RootNamespace>B</RootNamespace> | |||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion> | |||||
</PropertyGroup> | |||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> | |||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> | |||||
<ConfigurationType>DynamicLibrary</ConfigurationType> | |||||
<UseDebugLibraries>true</UseDebugLibraries> | |||||
<PlatformToolset>v142</PlatformToolset> | |||||
<CharacterSet>Unicode</CharacterSet> | |||||
</PropertyGroup> | |||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> | |||||
<ConfigurationType>Application</ConfigurationType> | |||||
<UseDebugLibraries>false</UseDebugLibraries> | |||||
<PlatformToolset>v142</PlatformToolset> | |||||
<WholeProgramOptimization>true</WholeProgramOptimization> | |||||
<CharacterSet>Unicode</CharacterSet> | |||||
</PropertyGroup> | |||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> | |||||
<ConfigurationType>Application</ConfigurationType> | |||||
<UseDebugLibraries>true</UseDebugLibraries> | |||||
<PlatformToolset>v142</PlatformToolset> | |||||
<CharacterSet>Unicode</CharacterSet> | |||||
</PropertyGroup> | |||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> | |||||
<ConfigurationType>Application</ConfigurationType> | |||||
<UseDebugLibraries>false</UseDebugLibraries> | |||||
<PlatformToolset>v142</PlatformToolset> | |||||
<WholeProgramOptimization>true</WholeProgramOptimization> | |||||
<CharacterSet>Unicode</CharacterSet> | |||||
</PropertyGroup> | |||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> | |||||
<ImportGroup Label="ExtensionSettings"> | |||||
</ImportGroup> | |||||
<ImportGroup Label="Shared"> | |||||
</ImportGroup> | |||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | |||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | |||||
</ImportGroup> | |||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | |||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | |||||
</ImportGroup> | |||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> | |||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | |||||
</ImportGroup> | |||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> | |||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | |||||
</ImportGroup> | |||||
<PropertyGroup Label="UserMacros" /> | |||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | |||||
<LinkIncremental>true</LinkIncremental> | |||||
</PropertyGroup> | |||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | |||||
<LinkIncremental>false</LinkIncremental> | |||||
</PropertyGroup> | |||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> | |||||
<LinkIncremental>true</LinkIncremental> | |||||
</PropertyGroup> | |||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> | |||||
<LinkIncremental>false</LinkIncremental> | |||||
</PropertyGroup> | |||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | |||||
<ClCompile> | |||||
<WarningLevel>Level3</WarningLevel> | |||||
<SDLCheck>true</SDLCheck> | |||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;sub_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> | |||||
<ConformanceMode>true</ConformanceMode> | |||||
</ClCompile> | |||||
<Link> | |||||
<SubSystem>Console</SubSystem> | |||||
<GenerateDebugInformation>true</GenerateDebugInformation> | |||||
</Link> | |||||
</ItemDefinitionGroup> | |||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | |||||
<ClCompile> | |||||
<WarningLevel>Level3</WarningLevel> | |||||
<FunctionLevelLinking>true</FunctionLevelLinking> | |||||
<IntrinsicFunctions>true</IntrinsicFunctions> | |||||
<SDLCheck>true</SDLCheck> | |||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> | |||||
<ConformanceMode>true</ConformanceMode> | |||||
</ClCompile> | |||||
<Link> | |||||
<SubSystem>Console</SubSystem> | |||||
<EnableCOMDATFolding>true</EnableCOMDATFolding> | |||||
<OptimizeReferences>true</OptimizeReferences> | |||||
<GenerateDebugInformation>true</GenerateDebugInformation> | |||||
</Link> | |||||
</ItemDefinitionGroup> | |||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> | |||||
<ClCompile> | |||||
<WarningLevel>Level3</WarningLevel> | |||||
<SDLCheck>true</SDLCheck> | |||||
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> | |||||
<ConformanceMode>true</ConformanceMode> | |||||
</ClCompile> | |||||
<Link> | |||||
<SubSystem>Console</SubSystem> | |||||
<GenerateDebugInformation>true</GenerateDebugInformation> | |||||
</Link> | |||||
</ItemDefinitionGroup> | |||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> | |||||
<ClCompile> | |||||
<WarningLevel>Level3</WarningLevel> | |||||
<FunctionLevelLinking>true</FunctionLevelLinking> | |||||
<IntrinsicFunctions>true</IntrinsicFunctions> | |||||
<SDLCheck>true</SDLCheck> | |||||
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions> | |||||
<ConformanceMode>true</ConformanceMode> | |||||
</ClCompile> | |||||
<Link> | |||||
<SubSystem>Console</SubSystem> | |||||
<EnableCOMDATFolding>true</EnableCOMDATFolding> | |||||
<OptimizeReferences>true</OptimizeReferences> | |||||
<GenerateDebugInformation>true</GenerateDebugInformation> | |||||
</Link> | |||||
</ItemDefinitionGroup> | |||||
<ItemGroup> | |||||
<ClInclude Include="sub.h" /> | |||||
</ItemGroup> | |||||
<ItemGroup> | |||||
<ClCompile Include="sub.cpp" /> | |||||
</ItemGroup> | |||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | |||||
<ImportGroup Label="ExtensionTargets"> | |||||
</ImportGroup> | |||||
</Project> |
@@ -0,0 +1,27 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |||||
<ItemGroup> | |||||
<Filter Include="源文件"> | |||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> | |||||
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions> | |||||
</Filter> | |||||
<Filter Include="头文件"> | |||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> | |||||
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions> | |||||
</Filter> | |||||
<Filter Include="资源文件"> | |||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> | |||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> | |||||
</Filter> | |||||
</ItemGroup> | |||||
<ItemGroup> | |||||
<ClInclude Include="sub.h"> | |||||
<Filter>头文件</Filter> | |||||
</ClInclude> | |||||
</ItemGroup> | |||||
<ItemGroup> | |||||
<ClCompile Include="sub.cpp"> | |||||
<Filter>源文件</Filter> | |||||
</ClCompile> | |||||
</ItemGroup> | |||||
</Project> |
@@ -0,0 +1,4 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |||||
<PropertyGroup /> | |||||
</Project> |
@@ -0,0 +1,5 @@ | |||||
#include"sub.h" | |||||
int sub(int x, int y) | |||||
{ | |||||
return x - y; | |||||
} |
@@ -0,0 +1,13 @@ | |||||
#ifndef _SUB_H_ | |||||
#define _SUB_H_ | |||||
#ifdef sub_EXPORTS | |||||
#define sub_EXPORTS _declspec(dllexport) | |||||
#else | |||||
#define sub_EXPORTS _declspec(dllimport) | |||||
#endif | |||||
sub_EXPORTS int sub(int x, int y); | |||||
#endif | |||||
@@ -0,0 +1,35 @@ | |||||
#include "pch.h" | |||||
#include "CppUnitTest.h" | |||||
#include<Windows.h> | |||||
#include <atlstr.h> | |||||
#include "../B/sub.h" | |||||
#define FilePath "..//ex1.ini" | |||||
using namespace Microsoft::VisualStudio::CppUnitTestFramework; | |||||
namespace UnitTest1 | |||||
{ | |||||
TEST_CLASS(UnitTest1) | |||||
{ | |||||
public: | |||||
int j = 0; | |||||
char str[50][10] = { 0 };//保存ini文件里 节的名字 | |||||
int count = CalcCount(50, str);//保存ini文件里 节的个数 | |||||
unsigned short i; | |||||
TEST_METHOD(TestMethode1) | |||||
{ | |||||
int nReal;//保存运算结果 | |||||
CString na, nb, nExpect; //b保存不同的键值 | |||||
for (j = 0; j < count; j++)//循环读取节,键值,并作对比。 | |||||
{ | |||||
GetPrivateProfileString(str[j], "na", " ", na.GetBuffer(20), 20, FilePath); | |||||
GetPrivateProfileString(str[j], "nb", " ", nb.GetBuffer(20), 20, FilePath); | |||||
GetPrivateProfileString(str[j], "nExpect", " ", nExpect.GetBuffer(20), 20, FilePath); | |||||
nReal = sub(_ttoi(na), _ttoi(nb)); //_ttoi是CString转为整型 | |||||
Assert::AreEqual(nReal, _ttoi(nExpect)); | |||||
} | |||||
} | |||||
}; | |||||
} |
@@ -0,0 +1,175 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |||||
<ItemGroup Label="ProjectConfigurations"> | |||||
<ProjectConfiguration Include="Debug|Win32"> | |||||
<Configuration>Debug</Configuration> | |||||
<Platform>Win32</Platform> | |||||
</ProjectConfiguration> | |||||
<ProjectConfiguration Include="Release|Win32"> | |||||
<Configuration>Release</Configuration> | |||||
<Platform>Win32</Platform> | |||||
</ProjectConfiguration> | |||||
<ProjectConfiguration Include="Debug|x64"> | |||||
<Configuration>Debug</Configuration> | |||||
<Platform>x64</Platform> | |||||
</ProjectConfiguration> | |||||
<ProjectConfiguration Include="Release|x64"> | |||||
<Configuration>Release</Configuration> | |||||
<Platform>x64</Platform> | |||||
</ProjectConfiguration> | |||||
</ItemGroup> | |||||
<PropertyGroup Label="Globals"> | |||||
<VCProjectVersion>16.0</VCProjectVersion> | |||||
<ProjectGuid>{6F4C0F3A-8892-4407-B3F3-E22C659148C1}</ProjectGuid> | |||||
<Keyword>Win32Proj</Keyword> | |||||
<RootNamespace>UnitTest1</RootNamespace> | |||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion> | |||||
<ProjectSubType>NativeUnitTestProject</ProjectSubType> | |||||
</PropertyGroup> | |||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> | |||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> | |||||
<ConfigurationType>DynamicLibrary</ConfigurationType> | |||||
<UseDebugLibraries>true</UseDebugLibraries> | |||||
<PlatformToolset>v142</PlatformToolset> | |||||
<CharacterSet>MultiByte</CharacterSet> | |||||
<UseOfMfc>false</UseOfMfc> | |||||
</PropertyGroup> | |||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> | |||||
<ConfigurationType>DynamicLibrary</ConfigurationType> | |||||
<UseDebugLibraries>false</UseDebugLibraries> | |||||
<PlatformToolset>v142</PlatformToolset> | |||||
<WholeProgramOptimization>true</WholeProgramOptimization> | |||||
<CharacterSet>Unicode</CharacterSet> | |||||
<UseOfMfc>false</UseOfMfc> | |||||
</PropertyGroup> | |||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> | |||||
<ConfigurationType>DynamicLibrary</ConfigurationType> | |||||
<UseDebugLibraries>true</UseDebugLibraries> | |||||
<PlatformToolset>v142</PlatformToolset> | |||||
<CharacterSet>Unicode</CharacterSet> | |||||
<UseOfMfc>false</UseOfMfc> | |||||
</PropertyGroup> | |||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> | |||||
<ConfigurationType>DynamicLibrary</ConfigurationType> | |||||
<UseDebugLibraries>false</UseDebugLibraries> | |||||
<PlatformToolset>v142</PlatformToolset> | |||||
<WholeProgramOptimization>true</WholeProgramOptimization> | |||||
<CharacterSet>Unicode</CharacterSet> | |||||
<UseOfMfc>false</UseOfMfc> | |||||
</PropertyGroup> | |||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> | |||||
<ImportGroup Label="ExtensionSettings"> | |||||
</ImportGroup> | |||||
<ImportGroup Label="Shared"> | |||||
</ImportGroup> | |||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | |||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | |||||
</ImportGroup> | |||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | |||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | |||||
</ImportGroup> | |||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> | |||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | |||||
</ImportGroup> | |||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> | |||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | |||||
</ImportGroup> | |||||
<PropertyGroup Label="UserMacros" /> | |||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | |||||
<LinkIncremental>true</LinkIncremental> | |||||
</PropertyGroup> | |||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> | |||||
<LinkIncremental>true</LinkIncremental> | |||||
</PropertyGroup> | |||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | |||||
<LinkIncremental>false</LinkIncremental> | |||||
</PropertyGroup> | |||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> | |||||
<LinkIncremental>false</LinkIncremental> | |||||
</PropertyGroup> | |||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | |||||
<ClCompile> | |||||
<PrecompiledHeader>Use</PrecompiledHeader> | |||||
<WarningLevel>Level3</WarningLevel> | |||||
<SDLCheck>true</SDLCheck> | |||||
<AdditionalIncludeDirectories>$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | |||||
<PreprocessorDefinitions>WIN32;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> | |||||
<UseFullPaths>true</UseFullPaths> | |||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile> | |||||
</ClCompile> | |||||
<Link> | |||||
<SubSystem>Windows</SubSystem> | |||||
<AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | |||||
<AdditionalDependencies>..\B\Debug\sub.obj;%(AdditionalDependencies)</AdditionalDependencies> | |||||
<GenerateDebugInformation>DebugFull</GenerateDebugInformation> | |||||
</Link> | |||||
</ItemDefinitionGroup> | |||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> | |||||
<ClCompile> | |||||
<PrecompiledHeader>Use</PrecompiledHeader> | |||||
<WarningLevel>Level3</WarningLevel> | |||||
<SDLCheck>true</SDLCheck> | |||||
<AdditionalIncludeDirectories>$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | |||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> | |||||
<UseFullPaths>true</UseFullPaths> | |||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile> | |||||
</ClCompile> | |||||
<Link> | |||||
<SubSystem>Windows</SubSystem> | |||||
<AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | |||||
</Link> | |||||
</ItemDefinitionGroup> | |||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | |||||
<ClCompile> | |||||
<PrecompiledHeader>Use</PrecompiledHeader> | |||||
<WarningLevel>Level3</WarningLevel> | |||||
<FunctionLevelLinking>true</FunctionLevelLinking> | |||||
<IntrinsicFunctions>true</IntrinsicFunctions> | |||||
<SDLCheck>true</SDLCheck> | |||||
<AdditionalIncludeDirectories>$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | |||||
<PreprocessorDefinitions>WIN32;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> | |||||
<UseFullPaths>true</UseFullPaths> | |||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile> | |||||
</ClCompile> | |||||
<Link> | |||||
<SubSystem>Windows</SubSystem> | |||||
<EnableCOMDATFolding>true</EnableCOMDATFolding> | |||||
<OptimizeReferences>true</OptimizeReferences> | |||||
<AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | |||||
</Link> | |||||
</ItemDefinitionGroup> | |||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> | |||||
<ClCompile> | |||||
<PrecompiledHeader>Use</PrecompiledHeader> | |||||
<WarningLevel>Level3</WarningLevel> | |||||
<FunctionLevelLinking>true</FunctionLevelLinking> | |||||
<IntrinsicFunctions>true</IntrinsicFunctions> | |||||
<SDLCheck>true</SDLCheck> | |||||
<AdditionalIncludeDirectories>$(VCInstallDir)UnitTest\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | |||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions> | |||||
<UseFullPaths>true</UseFullPaths> | |||||
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile> | |||||
</ClCompile> | |||||
<Link> | |||||
<SubSystem>Windows</SubSystem> | |||||
<EnableCOMDATFolding>true</EnableCOMDATFolding> | |||||
<OptimizeReferences>true</OptimizeReferences> | |||||
<AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | |||||
</Link> | |||||
</ItemDefinitionGroup> | |||||
<ItemGroup> | |||||
<ClCompile Include="pch.cpp"> | |||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader> | |||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader> | |||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader> | |||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader> | |||||
</ClCompile> | |||||
<ClCompile Include="UnitTest1.cpp" /> | |||||
</ItemGroup> | |||||
<ItemGroup> | |||||
<ClInclude Include="pch.h" /> | |||||
</ItemGroup> | |||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | |||||
<ImportGroup Label="ExtensionTargets"> | |||||
</ImportGroup> | |||||
</Project> |
@@ -0,0 +1,30 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |||||
<ItemGroup> | |||||
<Filter Include="源文件"> | |||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> | |||||
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions> | |||||
</Filter> | |||||
<Filter Include="头文件"> | |||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier> | |||||
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions> | |||||
</Filter> | |||||
<Filter Include="资源文件"> | |||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier> | |||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions> | |||||
</Filter> | |||||
</ItemGroup> | |||||
<ItemGroup> | |||||
<ClCompile Include="UnitTest1.cpp"> | |||||
<Filter>源文件</Filter> | |||||
</ClCompile> | |||||
<ClCompile Include="pch.cpp"> | |||||
<Filter>源文件</Filter> | |||||
</ClCompile> | |||||
</ItemGroup> | |||||
<ItemGroup> | |||||
<ClInclude Include="pch.h"> | |||||
<Filter>头文件</Filter> | |||||
</ClInclude> | |||||
</ItemGroup> | |||||
</Project> |
@@ -0,0 +1,4 @@ | |||||
<?xml version="1.0" encoding="utf-8"?> | |||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |||||
<PropertyGroup /> | |||||
</Project> |
@@ -0,0 +1,45 @@ | |||||
// pch.cpp: 与预编译标头对应的源文件 | |||||
#include "pch.h" | |||||
#include <stdio.h> | |||||
#include<Windows.h> | |||||
int CalcCount(int n, char(*str)[10]) | |||||
{ | |||||
TCHAR chSectionNames[2048] = { 0 };//定义一个数组,保存读取节的名字 | |||||
char* pSectionName; //保存找到的某个节名字符串的首地址 | |||||
int i = 0; //i指向数组chSectionNames的某个位置,从0开始,顺序后移 | |||||
int j = 0; //j用来保存下一个节名字符串的首地址相对于当前i的位置偏移量 | |||||
int k = 0; //临时变量,用于给str数组赋值 | |||||
int m = 0; //临时变量,用于给str数组赋值 | |||||
int count = 0; //统计节的个数 | |||||
GetPrivateProfileSectionNames(chSectionNames, 2048, "..//ex1.ini");//获取文件中的节名,每个节名以"\0"分割,保存在chSectionNames中 | |||||
//要加头文件 | |||||
for (i = 0; i < 2048; i++, j++)//对chSectionName中保存的内容进行拆分 | |||||
{ | |||||
if (chSectionNames[0] == '\0')//如果第一个字符就是0,则说明ini中一个节也没有, | |||||
{ | |||||
break; | |||||
} | |||||
if (chSectionNames[i] == '\0') | |||||
{ | |||||
count++; | |||||
pSectionName = &chSectionNames[i - j]; //找到一个0,则说明从这个字符往前,减掉j个偏移量, | |||||
//就是一个节名的首地址 | |||||
j = -1; //找到一个节名后,j的值要还原,以统计下一个节名地址的偏移量 | |||||
//赋成-1是因为节名字符串的最后一个字符0是终止符,不能作为节名 | |||||
for (m = 0; m <= strlen(pSectionName); m++)//把找到的节名保存到str中 | |||||
{ | |||||
str[k][m] = *(pSectionName + m); | |||||
} | |||||
//str[k][++m] = '\0';//手动给节名加上\0,表示这个节名结束 | |||||
k++;//变量自加,用来保存下一个节名 | |||||
//在获取节名的时候可以获取该节中键的值,前提是我们知道该节中有哪些键。 | |||||
if (chSectionNames[i + 1] == 0) | |||||
{ | |||||
break; //当两个相邻的字符都是0时,则所有的节名都已找到,循环终止 | |||||
} | |||||
} | |||||
} | |||||
return count;//返回节名的个数 | |||||
} | |||||
// 当使用预编译的头时,需要使用此源文件,编译才能成功。 |
@@ -0,0 +1,12 @@ | |||||
// pch.h: 这是预编译标头文件。 | |||||
// 下方列出的文件仅编译一次,提高了将来生成的生成性能。 | |||||
// 这还将影响 IntelliSense 性能,包括代码完成和许多代码浏览功能。 | |||||
// 但是,如果此处列出的文件中的任何一个在生成之间有更新,它们全部都将被重新编译。 | |||||
// 请勿在此处添加要频繁更新的文件,这将使得性能优势无效。 | |||||
#ifndef PCH_H | |||||
#define PCH_H | |||||
int CalcCount(int n, char(*str)[10]); | |||||
// 添加要在此处预编译的标头 | |||||
#endif //PCH_H |
@@ -0,0 +1,9 @@ | |||||
[TestMethod1] | |||||
na=12 | |||||
nb=4 | |||||
nExpect=8 | |||||
[TestMethod2] | |||||
na=7 | |||||
nb=3 | |||||
nExpect=4 | |||||
@@ -0,0 +1,129 @@ | |||||
# sub函数说明文档 | |||||
## 一、工程说明 | |||||
- 本工程的配置类型是一个动态库文件,目的是生成一个可被其他工程调用动态库,动态库的函数功能是:输入两个int类型的数,返回两数之差。 | |||||
## 二、头文件 sub.h ,放的是sub函数声明 | |||||
```C | |||||
#ifndef _SUB_H_ | |||||
#define _SUB_H_ | |||||
#ifdef sub_EXPORTS | |||||
#define sub_EXPORTS _declspec(dllexport) | |||||
#else | |||||
#define sub_EXPORTS _declspec(dllimport) | |||||
#endif | |||||
/* | |||||
**函数名: sub | |||||
**参数:int ,int | |||||
**返回值:int | |||||
**函数功能:传入两个int类型的参数,对其进行减法运算并返回差值。 | |||||
*/ | |||||
sub_EXPORTS int sub(int x, int y); | |||||
#endif | |||||
``` | |||||
## 三、源文件 sub.cpp ,放的是sub函数的另一 | |||||
```C | |||||
#include"sub.h" | |||||
int sub(int x, int y) | |||||
{ | |||||
return x - y; | |||||
} | |||||
``` | |||||
## 四、单元测试 | |||||
- 手动创建ini文件并添加测试样例,之后在单元测试的源文件里对ini文件进行读取解析 ,完成以后获取单元测试的结果,保证代码覆盖率在80%以上。其中对ini文件的读取另封装了函数,见下面的源码。 | |||||
1. ini文件内容 exl.ini | |||||
``` | |||||
[TestMethod1] #测试样例1 | |||||
na=10 #函数第一个入数 | |||||
nb=4 #函数第二个入参 | |||||
nExpect=6 #两个入参相减的正确结果 | |||||
[TestMethod2] | |||||
na=7 | |||||
nb=3 | |||||
nExpect=4 | |||||
``` | |||||
2. 读取ini文件的函数 int CalcCount(int n, char(*str)[10]) | |||||
```C | |||||
/* | |||||
**函数功能:获取一个ini文件里有多少个节,并通过二维指针数组将节名带出来。 | |||||
* 函数名:CalcCount() | |||||
* 入参:int n --------节的个数 | |||||
* char (*str)[10] --------二维数组指针,10是节名的长度,可以根据需求修改 | |||||
*返回值:int --------返回节的个数 | |||||
*/ | |||||
int CalcCount(int n, char(*str)[10]) | |||||
int CalcCount(int n, char(*str)[10]) | |||||
{ | |||||
TCHAR chSectionNames[2048] = { 0 };//定义一个数组,保存读取节的名字 | |||||
char* pSectionName; //保存找到的某个节名字符串的首地址 | |||||
int i = 0; //i指向数组chSectionNames的某个位置,从0开始,顺序后移 | |||||
int j = 0; //j用来保存下一个节名字符串的首地址相对于当前i的位置偏移量 | |||||
int k = 0; //临时变量,用于给str数组赋值 | |||||
int m = 0; //临时变量,用于给str数组赋值 | |||||
int count = 0; //统计节的个数 | |||||
GetPrivateProfileSectionNames(chSectionNames, 2048, "..//ex1.ini");//获取文件中的节名,每个节名以"\0"分割,保存在chSectionNames中 | |||||
//要加头文件 | |||||
for (i = 0; i < 2048; i++, j++)//对chSectionName中保存的内容进行拆分 | |||||
{ | |||||
if (chSectionNames[0] == '\0')//如果第一个字符就是0,则说明ini中一个节也没有, | |||||
{ | |||||
break; | |||||
} | |||||
if (chSectionNames[i] == '\0') | |||||
{ | |||||
count++; | |||||
pSectionName = &chSectionNames[i - j]; //找到一个0,则说明从这个字符往前,减掉j个偏移量, | |||||
//就是一个节名的首地址 | |||||
j = -1; //找到一个节名后,j的值要还原,以统计下一个节名地址的偏移量 | |||||
//赋成-1是因为节名字符串的最后一个字符0是终止符,不能作为节名 | |||||
for (m = 0; m <= strlen(pSectionName); m++)//把找到的节名保存到str中 | |||||
{ | |||||
str[k][m] = *(pSectionName + m); | |||||
} | |||||
k++;//变量自加,用来保存下一个节名 | |||||
//在获取节名的时候可以获取该节中键的值,前提是我们知道该节中有哪些键。 | |||||
if (chSectionNames[i + 1] == 0) | |||||
{ | |||||
break; //当两个相邻的字符都是0时,则所有的节名都已找到,循环终止 | |||||
} | |||||
} | |||||
} | |||||
return count;//返回节名的个数 | |||||
} | |||||
``` | |||||
3. 单元测试源码 UNITest1.cpp | |||||
```C | |||||
#include "pch.h" | |||||
#include "CppUnitTest.h" | |||||
#include<Windows.h> | |||||
#include <atlstr.h> | |||||
#include "../B/sub.h" | |||||
#define FilePath "../ex1.ini" | |||||
using namespace Microsoft::VisualStudio::CppUnitTestFramework; | |||||
namespace UnitTest1 | |||||
{ | |||||
TEST_CLASS(UnitTest1) | |||||
{ | |||||
public: | |||||
int j = 0;//循环变量,用来访问ini文件中的 节 | |||||
char str[50][10] = { 0 };//存放ini文件里 节的名字 | |||||
int count = CalcCount(50, str);//保存ini文件里 节的个数 | |||||
TEST_METHOD(TestMethode1) | |||||
{ | |||||
int nReal;//保存运算结果 | |||||
CString na, nb, nExpect; //保存测试样例中的键值 | |||||
for (j = 0; j < count; j++)//遍历读取测试样例 | |||||
{ | |||||
GetPrivateProfileString(str[j], "na", " ", na.GetBuffer(20), 20, FilePath);//读取第一个参数,保存在na里 | |||||
GetPrivateProfileString(str[j], "nb", " ", nb.GetBuffer(20), 20, FilePath);//读取第二个参数,保存在nb里 | |||||
GetPrivateProfileString(str[j], "nExpect", " ", nExpect.GetBuffer(20), 20, FilePath);//读取正确的值,保存在nExpect里 | |||||
nReal = sub(_ttoi(na), _ttoi(nb)); //_ttoi是CString转为整型,把运算结果给nReal | |||||
Assert::AreEqual(nReal, _ttoi(nExpect));//对比运算结果和正确结果 | |||||
} | |||||
} | |||||
}; | |||||
} | |||||
``` | |||||
4. 附加测试结果 | |||||
 |