我的测试有一个文件作为输出。我希望在测试的输出窗口中看到该文件(即,如果我右键单击已完成的测试并选择:查看测试结果详细信息)。
我正在实验室进行单元测试,下面是我正在测试的应用程序中的一段代码。大多数单元测试都已完成,但关于下面的构造函数,我只是不知道如何测试它。例如,构造函数到底对数组元素做了什么?测试构造函数的好方法是什么?
是否有一个善良的灵魂可以给我一个正确的方向踢?
public struct Point {
public int x, y;
public Point(int a, int b) {
x = a;
y = b;
}
}
Run Code Online (Sandbox Code Playgroud)
...
public Triangle(Point[] s) {
sides = new double[s.Length];
sides[0] = Math.Sqrt(Math.Pow((double)(s[1].x - s[0].x), 2.0) + Math.Pow((double)(s[1].y - s[0].y), 2.0));
sides[1] = Math.Sqrt(Math.Pow((double)(s[1].x - s[2].x), 2.0) + Math.Pow((double)(s[1].x - s[2].x), 2.0));
sides[2] = Math.Sqrt(Math.Pow((double)(s[2].x - s[0].x), 2.0) + Math.Pow((double)(s[2].x - s[0].x), 2.0));
}
Run Code Online (Sandbox Code Playgroud)
...
[TestMethod()]
public void TriangleConstructorTest1()
{
Point[] s = null; // TODO: Initialize …Run Code Online (Sandbox Code Playgroud) 我想检查所选项目(我有源代码)是否是以下框架之一的 TestProject:NUnit、MSTest、xUnit。
对于 MSTest 来说很简单。我可以检查 .csproj 和标签。如果我有 {3AC096D0-A1C2-E12C-1390-A8335801FDAB} 则意味着它是测试项目。
问题是NUnit 和xUnit。我可以在 .csproj 中检查此案例的引用。如果我有 nunit.framework 或 xunit,那就很明显了。但我想知道是否可以以不同的方式检查这一点。
您知道识别测试项目的不同方法吗?
我按照本文档将我的 Web 性能测试项目的构建迁移到 TFS 2013 构建过程模板,以进行自动 nuget 恢复。
我的解决方案有 .webtest 文件,它们是 Web 性能测试的容器。但是 VsTest.console.exe 无法识别 .webtest 测试。我查看了发现者,发现安装的没有一个支持 .webtest 扩展名。

我尝试使用 vstest.console.exe 查找用于运行 .webtests 的测试适配器,但一无所获。
本文档对vstest.console.exe 进行了以下说明:
您可以从命令行运行自动化单元和编码的 UI 测试。
这对于mstest.exe:
您可以在本地或使用测试控制器或测试代理从命令行运行自动化 Web 性能和负载测试。
为什么vstest.console.exe不支持 .webtests ?它不是被设计为mstest.exe的替代品,用于使用适配器运行任何类型的测试吗?
另外,如果这意味着我需要编写一个可以读取和运行带有 .webtest 扩展名的测试的自定义适配器,那么我需要做什么?
我的代码覆盖率已将我的自定义异常列为 0 测试覆盖率。我正在使用 MsTest、Moq 和 Fluentassertions。是否有针对自定义异常的适当单元测试?
这是我的异常类
public class ConfigurationNotFoundException : Exception
{
public ConfigurationNotFoundException()
{
}
public ConfigurationNotFoundException(string message) : base(message)
{
}
public ConfigurationNotFoundException(string message, Exception innerException) : base(message, innerException)
{
}
protected ConfigurationNotFoundException(SerializationInfo info, StreamingContext context) : base(info, context)
{
}
}
Run Code Online (Sandbox Code Playgroud) 在你指出其他问题之前,请继续阅读......
我正在运行来自 Jenkins 的 mstest 参数(不确定这是否相关)并希望排除不属于特定类别的测试。在一个类别中包含测试可以使用 ,/category:CI但是当我使用它来排除使用/category:!CI它的测试时不起作用。它只是说no tests to execute。我 %110 确定我的容器中有不属于此类别的测试。我正在为 VS2010 使用 mstest 测试。
mstest.exe /testcontainer:%%i /runconfig:%TestSettingFile% /category:"!CI" /resultsfile:Results.trx
Run Code Online (Sandbox Code Playgroud)
知道我可能做错了什么
编辑 我发现这个命令在从 Jenkins 运行时不起作用,但它可以通过本地机器上的 cmd 正常工作 - Jenkins 当前是否存在与此相关的错误?
我已经使用 VS 2015 模板创建了一个 Roslyn 分析器。鉴于默认情况下启用了诊断,我已经让一切正常工作,包括单元测试。
如果我设定的isEnabledByDefault参数上DiagnosticDescriptor,以false我能得到的一切使用使诊断在Visual Studio中的工作.ruleset文件。但是,一旦默认禁用诊断,单元测试将不再报告其结果。
如何在单元测试期间启用这些默认禁用的诊断?我准备改变单元测试调用 Roslyn Compilation/Analyzer/Diagnostic/等的方式。结果,但由于缺乏我设法从各种来源抓取的文档,我还没有找到指定设置的方法。
我使用的是 Visual Studio 2017、Visual Studio 测试工具和 VSTFS v.15。我设法使用 Selenium 截取了屏幕截图,目前将它们存储在“TestLogsDir”文件夹中。当我在本地运行 UI 测试时,我可以在每次测试运行后轻松找到我的屏幕截图。但是在虚拟机“TestLogsDir”上运行每晚构建后被删除。显然,我可以将屏幕截图存储在其他地方,但问题是如何将屏幕截图附加到 TFS 测试报告中的相应测试用例?
我有一个使用 .NET 4.7 构建的解决方案。该解决方案有两个项目:
我正在尝试迁移此解决方案以使用 .NET Standard | 核。
我已成功将类库转移到 .NET Standard 2.0 项目。我还将单元测试项目转移到.NET Core 2.0 mstest 项目。一切都编译。我可以按预期运行我的测试。但是,没有日志通过 NLog 写入。
在我的 .NET 4.7 版本的解决方案中,当我运行单元测试时,实际的日志文件是通过 NLog 写入的。但是,在新的 .NET Standard | 核心实现,这个日志文件没有被写入。我的 mstest 项目中有以下两个文件:
应用配置
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
</configuration>
Run Code Online (Sandbox Code Playgroud)
配置文件
<?xml version="1.0" encoding="utf-8" ?>
<!-- XSD manual extracted from package NLog.Schema: https://www.nuget.org/packages/NLog.Schema-->
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xsi:schemaLocation="NLog NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
autoReload="true"
internalLogFile="c:\temp\console-example-internal.log"
internalLogLevel="Info" >
<targets>
<target name="myLogs" xsi:type="File" deleteOldFileOnStartup="true" fileName="${basedir}/logs/MyLogs.json" createDirs="true" keepFileOpen="true" encoding="utf-8" layout="${message}" /> …Run Code Online (Sandbox Code Playgroud) 想为 HttpTrigger GET 编写单元测试。有方法签名如下:
public static async Task<HttpResponseMessage> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", Route = null)]
HttpRequestMessage request,
ILogger log)
Run Code Online (Sandbox Code Playgroud)
这里ILogger是 Microsoft.Extensions.Logging 的类型。
如何使用此注入编写单元测试用例,尝试创建ILogger使用以下内容的存根,但这需要LoggerFactory.
public class LoggerWriter : Microsoft.Extensions.Logging.Logger<ILogger>
{
public LoggerWriter() : base() // this needs logger factory.
{
}
}
Run Code Online (Sandbox Code Playgroud)
httptrigger azure 函数的任何示例单元测试Ilogger都有助于克服上述问题(注入)。
nunit mstest dependency-injection azure-functions azure-functions-runtime