我需要告诉 AutoFixture 它生成的所有随机日期都应该在一定限制内,或者例如等于 Now。我只想设置 Fixture 实例的行为,以便它适用于整个代码中的所有用例,我不想单独检查。
我如何配置 AutoFixture 来做到这一点?
我目前正在使用FluentAssertion比较 2 个对象。
我很想知道它是用什么方式来比较的?
\n\n使用Reflection像这样
public static void PropertyValuesAreEquals(object actual, object expected) \n{\n PropertyInfo[] properties = expected.GetType().GetProperties();\n foreach (PropertyInfo property in properties)\n {\n object expectedValue = property.GetValue(expected, null);\n object actualValue = property.GetValue(actual, null);\n if (!Equals(expectedValue, actualValue))\n Assert.Fail("Property {0}.{1} does not match. Expected: {2} but was: {3}", property.DeclaringType.Name, property.Name, expectedValue, actualValue);\n //\xe2\x80\xa6\xe2\x80\xa6\xe2\x80\xa6\xe2\x80\xa6\xe2\x80\xa6\xe2\x80\xa6\xe2\x80\xa6\xe2\x80\xa6\xe2\x80\xa6\xe2\x80\xa6\xe2\x80\xa6\xe2\x80\xa6.\n}\nRun Code Online (Sandbox Code Playgroud)\n\n如果用另一种方式来比较,那是什么呢?
\n将 Nunit 从版本 v2.6.3 更新到 3.12.0 后。我的单位停止通过。该问题发生在单元测试中,更新后无法找到 RequiresSTAAttribute。
[Test]
[RequiresSTA]
public void When_Smart_Motion_Activity_Is_Selected_The_Values_Are_Valid()
{
SomeViewModel vm = ViewModelHelper.CreateDefaultViewModel();
...
}
Run Code Online (Sandbox Code Playgroud)
删除属性后测试失败,出现以下异常:
System.InvalidOperationException :调用线程必须是 STA,因为许多 UI 组件都需要此。在 System.Windows.Input.InputManager..ctor() 在 System.Windows.Input.InputManager.GetCurrentInputManagerImpl() 在 System.Windows.Input.KeyboardNavigation..ctor() 在 System.Windows.FrameworkElement.FrameworkServices..ctor( )在 System.Windows.FrameworkElement.EnsureFrameworkServices() 在 System.Windows.FrameworkElement..ctor() 在 System.Windows.Controls.Panel..ctor() 在 System.Windows.Controls.Canvas..ctor() 在项目.....:xyz 线
是否有任何适用于 3.12.0 的建议解决方法或替代 [RequiresSTA] ?
我有一个在 YAML 中运行的 Azure DevOps 管道。
我正在使用 VSTest@2 任务来执行一些单元测试。这一切都工作正常,我看到测试结果出现在阶段概述 UI 本身以及标题中的“测试和覆盖范围”概述中。
我的 YAML 管道还会向 Slack 通道发布一条消息,其中包含指向构建、成功/失败状态和其他内容的链接。我也热衷于将测试结果添加到消息中...只是一个简单的“总测试 X - 通过 X - 失败 X - 跳过 X”显示。这发生在最后的一个单独的阶段。
有没有办法在管道的后期(在不同的代理上运行)中获取前一阶段的测试结果?
测试是否可作为工件使用,如果是,它们在哪里以及以什么格式提供?
我认为唯一的方法是通过 Azure API 是正确的吗?(我真的懒得为了这个功能而在管道中设置身份验证,我在其他任何地方都不与 API 交互)
我们的内部框架使用通用类DBField<T>来模拟具有与实体框架不兼容的数据库(例如 Oracle 11 或 Sybase)的实体字段。
我们试图使其尽可能透明(再次,像实体字段一样),以便以下代码可以工作:
DBField<int?> z_intLength = 2;
while (z_intLength <= 5)
{
z_intLength++;
}
//[...]
DBField<int?> z_intMaxLength = 10;
if (z_intLength > z_intMaxLength)
{
}
Run Code Online (Sandbox Code Playgroud)
上面的效果很好。我们使用了public static implicit operator DBField<T>(T value)and public static implicit operator T(DBField<T> value),以及覆盖==和其他比较运算符,以及实现IEquatable<DBField<T>>、IComparable和IComparable<DBField<T>>。
现在我们正在尝试进行DBField<T>NUnit 测试,在这方面我们还很陌生。
值得注意的是,我们正在尝试各种等效方案:
string z_strComment = "Comment";
_objOrder2.OrderComment = z_strComment;
//[...]
Assert.True("Comment" == _objOrder2.OrderComment);
Assert.That("Comment", Is.EqualTo(_objOrder2.OrderComment));
Assert.That(_objOrder2.OrderComment, Is.EqualTo("Comment"));
Assert.Equals("Comment", _objOrder2.OrderComment);
Run Code Online (Sandbox Code Playgroud)
前两个断言通过,后两个断言失败。
每个断言的内部运作似乎都有所不同。有人可以解释它是什么吗?
更准确地说,使用断点进行调试似乎表明Assert.That("Comment", Is.EqualTo(_objOrder2.OrderComment)) …
正如标题所说,我想使用 aTestCase和TestCaseSource/的组合ValueSource。
这是一个例子:
public static string[] Source1 = new string[]
{
"One", "Two", "Three"
};
public static string[] Source2 = new string[]
{
"Four", "Five", "Six"
};
[TestCase("A"), TestCaseSource(nameof(Source1))]
[TestCase("B"), TestCaseSource(nameof(Source2))]
[TestCase("C"), TestCaseSource(nameof(Source1))]
[TestCase("C"), TestCaseSource(nameof(Source2))]
public void MyTest(string x, string y)
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
当然这是行不通的,但我想做的是:
有可能实现这样的目标吗?
为什么这个项目不再维护?我喜欢这个应用程序,但不更新它似乎是对所有.Net开发人员的犯罪.考虑到未来发布的可能性,我希望添加几个项目.
任何人都可以分享我不知道的东西吗?
如何编写以下方法的代码,以便可以在NUnit中进行测试?怎么处理Hashtable?
public DataSet MySampleMethod(int param1, string param2, Hashtable ht)
{
if(ht==null)
{
ht = new Hashtable();
}
ht.Add("testKey","testData");
DataSet ds = new DataSet();
ds.Tables.Add();
ds.Tables[0].Columns.Add("Column1");
ds.Tables[0].Columns.Add("Column2");
ds.Tables[0].Columns.Add("Column3");
DataRow dr = ds.Tables[0].NewRow();
dr["Column1"] = "My column 1";
dr["Column2"] = "My column 2";
dr["Column3"] = "My column 3";
ds.Tables[0].Rows.Add(dr);
DataRow dr1 = ds.Tables[0].NewRow();
dr1["Column1"] = param1.ToString();
dr1["Column2"] = param2;
dr1["Column3"] = ht["testKey"].ToString();
ds.Tables[0].Rows.Add(dr1);
return ds;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Rhino Mocks在VB.NET中实现HtmlHelperTest.cs中的GetHttpContext函数,但是我没有定义"Type'HttpContextBase'." 编译器建议将其更改为,但是当我这样做时,我得到一个运行时错误,密封的类不能被模拟.HttpContext
我的测试项目引用了System.Web并且还导入了该命名空间.还有什么我需要做的才能让HttpContextBase类型对我想要的代码可见吗?
这是代码,但我不知道它与问题有多相关.
Imports NUnit.Framework
Imports Rhino.Mocks
Imports System.Web.Routing
<TestFixture()> _
Public Class XhtmlHelperTest
Public Const AppPathModifier = "/$(SESSION)"
'Various test methods here...'
Private Shared Function GetHttpContext(ByVal appPath As String, _
ByVal requestPath As String, _
ByVal httpMethod As String, _
Optional ByVal protocol As String = "http", _
Optional ByVal port As Integer = -1 _
) As HttpContextBase
Dim mockHttpContext = MockRepository.GenerateMock(Of HttpContextBase)()
If Not String.IsNullOrEmpty(appPath) Then
mockHttpContext.Expect(Function(hc) hc.Request.ApplicationPath).Return(appPath) …Run Code Online (Sandbox Code Playgroud) 任何人都可以提出有关nunit和visual studio 2008入门的好参考/指南.(除了Nunit文档本身!).我特别想在vs 2008中建立一个测试项目.
nunit ×10
c# ×5
unit-testing ×4
.net ×2
asp.net-mvc ×2
autofixture ×1
azure-devops ×1
nunit-2.5 ×1
rhino-mocks ×1
tdd ×1
vb.net ×1
wpf ×1