小编k.m*_*k.m的帖子

WPF MVVM Light单元测试ViewModels

我不是MVVM模式的常规,这基本上是我第一次玩它.

我以前做的("普通"WPF)是用业务层创建我的视图,也许是数据层(通常包含我的服务或实体框架创建的实体).

现在经过一些玩弄我从MVVM Light创建了一个标准模板,并做到了这一点:

定位:

public class ViewModelLocator
{
    static ViewModelLocator()
    {
        ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);

        if (ViewModelBase.IsInDesignModeStatic)
        {
            SimpleIoc.Default.Register<IUserService, DesignUserService>();
        }
        else
        {
            SimpleIoc.Default.Register<IUserService, IUserService>();
        }

        SimpleIoc.Default.Register<LoginViewModel>();
    }

    public LoginViewModel Login
    {
        get
        {
            return ServiceLocator.Current.GetInstance<LoginViewModel>();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

登录ViewModel:

public class LoginViewModel : ViewModelBase
{
    private readonly IUserService _userService;

    public RelayCommand<Object> LoginCommand
    {
        get
        {
            return new RelayCommand<Object>(Login);
        }
    }

    private string _userName;
    public String UserName
    {
        get { return _userName; }
        set
        {
            if (value == _userName)
                return; …
Run Code Online (Sandbox Code Playgroud)

c# wpf unit-testing mvvm mvvm-light

11
推荐指数
1
解决办法
8822
查看次数

如何将单元测试应用于需要动态用户输入的C#功能?

以下功能从用户获得输入.我需要使用测试这个功能Unit Testing.任何人都可以告诉我如何测试这种动态需要用户输入的功能.谢谢

喜欢boundary value analysis......

numberOfCommands 应该 (0 <= n <= 100)

public static int Get_Commands()
{
    do
    {
        string noOfCommands = Console.ReadLine().Trim();
        numberOfCommands = int.Parse(noOfCommands);             
    }
    while (numberOfCommands <= 0 || numberOfCommands >= 100);  

    return numberOfCommands;
}
Run Code Online (Sandbox Code Playgroud)

以编程方式提示将是非常有帮助的!

c# tdd unit-testing input

7
推荐指数
1
解决办法
8706
查看次数

使用C#按Alpha.Numeric对XML节点排序

假设我有一个XmlDocument我生成的InnerXml,看起来像这样:

<ORM_O01>
  <MSH>
    <MSH.9>
      <MSG.2>O01</MSG.2>
    </MSH.9>
    <MSH.6>
      <HD.1>13702</HD.1>
    </MSH.6>
  </MSH>
  <ORM_O01.PATIENT>
   <PID>      
     <PID.18>
       <CX.1>SecondTestFin</CX.1>
     </PID.18>
     <PID.3>
        <CX.1>108</CX.1>
     </PID.3>
   </PID>
  </ORM_O01.PATIENT>
</ORM_O01>
Run Code Online (Sandbox Code Playgroud)

如您所见,节点<PID.18>在节点之前<PID.3>.(<MSH.9>也在之前<MSH.6>.)

重构我的一代将导致我干净的代码变得非常混乱.

有没有办法对节点进行排序,以便它排序alpha直到它到达最后一个句点然后排序数字(如果最后的值是数字)?

通过"数字排序"我的意思是它将查看整数而不是char的char.(所以18> 3).

.net c# xml xmldocument .net-4.0

6
推荐指数
1
解决办法
4472
查看次数

在相同对象中的另一个方法上使用FakeItEasy的A.CallTo()

使用FakeItEasy,如何检查我的对象的方法是否在同一个对象上调用另一个方法?

考试:

[TestMethod]
public void EatBanana_CallsWillEat()
{
  var banana = new Banana();
  var myMonkey = new Monkey();

  myMonkey.EatBanana(banana);

  //this throws an ArgumentException, because myMonkey is a real instance, not a fake
  A.CallTo(() => myMonkey.WillEat(banana)
    .MustHaveHappened();
}
Run Code Online (Sandbox Code Playgroud)

班级:

public class MyMonkey {
  private readonly IMonkeyRepo _monkeyRepo;

  public MyMonkey(IMonkeyRepo monkeyRepo) {
    _monkeyRepo = monkeyRepo;
  }

  public void EatBanana(Banana banana) {
    //make sure the monkey will eat the banana
    if (!this.WillEat(banana)) {
      return;
    }

    //do things here
  }

  public bool WillEat(Banana banana) { …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing fakeiteasy

6
推荐指数
1
解决办法
4924
查看次数

使用hibernate返回查询的计数值

这是我的mysql查询:

SELECT count(*) 
FROM bw_jobs 
WHERE year(job_date)=year(curdate()) AND month(job_date)=month(curdate());
Run Code Online (Sandbox Code Playgroud)

如何在hibernate中使用它来获取计数值?

hibernate

4
推荐指数
1
解决办法
3万
查看次数

如何使用xUnit.net进行单元测试控制台输出?

我有一个打印类的私有变量的方法.

public class Test
{
    private int number;

    public Test(int number)
    {
        this.number = number;
    }

    public void PrintValue()
    {
        Console.WriteLine("Number: " + number);
    }
}
Run Code Online (Sandbox Code Playgroud)

如何创建单元测试以确保它在控制台上打印出我期望的值?

c# console unit-testing xunit.net

4
推荐指数
1
解决办法
3614
查看次数

创建假 DbDataAdapter 会抛出 FakeItEasy.Core.FakeCreationException

我在 Visual Studio 2010 中设置了一个简单的测试项目。对于单元测试,我使用 nunit 2.6.1 并模拟通过 NuGet 安装的 FakeItEasy 1.7.4582.63。

\n\n

我尝试使用以下代码伪造 DbDataAdapter:

\n\n
using System.Data.Common;\nusing FakeItEasy;\nusing NUnit.Framework;\n\nnamespace huhu\n{\n    [TestFixture]\n    public class Class1\n    {\n        [Test]\n        public void test1()\n        {\n            A.Fake<DbDataAdapter>();\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我使用 .NET Framework 3.5 运行测试时,一切正常并且 test1 将通过。但是,当我将框架版本设置为 .NET 4.0 时,出现以下异常:

\n\n
FakeItEasy.Core.FakeCreationException : \n  Failed to create fake of type "System.Data.Common.DbDataAdapter".\n\n  Below is a list of reasons for failure per attempted constructor:\n    No constructor arguments failed:\n      No default constructor was found on the type System.Data.Common.DbDataAdapter.\n …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing fakeiteasy

4
推荐指数
1
解决办法
1890
查看次数

如果使用mock,在这种情况下单元测试的目的是什么

我对单元测试有疑问.我好几天都在考虑它,但找不到答案.

说,我有一个从Web服务下载文件并将其写入磁盘的功能.在没有实际看到文件被下载并写入磁盘的情况下测试它的目的是什么?

虽然我知道我们可以嘲笑网络服务,但我在这种情况下如何做到这一点?据我所知,Mockito之类的东西只是模仿行为而不是提供有意义的数据(本例中的文件).

即使我们可以模拟Web服务的行为,我如何模拟将文件写入磁盘而不真正写入磁盘?

对不起,我没有具体的例子.请随时提出您的意见.

非常感谢

java unit-testing mocking

3
推荐指数
1
解决办法
277
查看次数

使用 Moq 模拟存储库

为了模拟存储库,我使用下面的代码。我不明白为什么变量empl总是null.

你知道我错过了什么吗?

谢谢,

[TestMethod]
public void Test()
{
    var employee = new Employee { EmployeeID = 1, Code = "Code", FirstName = "MyFirstName", LastName = "MyName" };

    var employeeRepository = new Mock<IEmployeeRepository>();
    employeeRepository.Setup(x => x.Add(employee)).Verifiable();

    var employeeService = new EmployeeService(employeeRepository.Object);
    var empl = employeeService.GetById(1);

    Assert.IsNotNull(empl);
}

public class Employee
{
    public int EmployeeID { get; set; }
    public string Code { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing moq mocking repository

3
推荐指数
1
解决办法
2329
查看次数

在同一对象上调用两次时,MustHaveHappened失败

给定以下测试类(以及相关的DTO类和接口):

public class Foo
{
    private readonly IBar _bar;

    public Foo(IBar bar) { _bar = bar; }

    public void DoStuff()
    {
        var dto = new DTO();

        dto.Num = 1;
        _bar.Test(dto);

        dto.Num = 2;
        _bar.Test(dto);
    }
}

public class DTO { public int Num { get; set; } }

public interface IBar { void Test(DTO dto); }
Run Code Online (Sandbox Code Playgroud)

而这个测试方法(试图验证IBar.Test()被调用两次:一次用Num = 1,一次用Num = 2):

public void TestMethod1()
{
    var bar = A.Fake<IBar>();
    var foo = new Foo(bar);
    foo.DoStuff();

    A.CallTo(() => bar.Test(A<DTO>.That.Matches(x => x.Num …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing fakeiteasy

2
推荐指数
1
解决办法
391
查看次数

在C#中模拟一个局部变量

我有一个C#类,它自己实例化一个NetworkCommunicator类.我想模拟NetworkCommunicator我的单元测试类,并用一个非常简单的存根替换它.

NetworkCommunicator它永远不会作为参数传递.它是由被测试的类创建的.

在Ruby中,这很容易被模拟出来.在Java中,这就是你需要依赖注入的原因,这对于这个项目来说太重了.有没有一种简单的方法可以在C#中模拟它,也许使用Moq或类似的东西?

c# unit-testing dependency-injection moq mocking

2
推荐指数
1
解决办法
4489
查看次数

将linq查询转换为ObservableCollection

这是我试图将数据网格绑定到的代码:

var query = (from s in entity.Sources 
                  where s.CorporationId == corporationId 
                  select new SourceItem
                  {
                    CorporationId =  s.CorporationId,
                    Description=s.Description,
                    IsActive =  s.IsActive,
                    Name=s.Name,
                    SourceId=s.SourceId,
                    TokenId=s.TokenId
                  });
      var x = new ObservableCollection<Source>(query);
Run Code Online (Sandbox Code Playgroud)

这是我的SourceItetm类:

   private void SourceDataGrid_AddingNewItem(object sender, System.Windows.Controls.AddingNewItemEventArgs e)
    {
      var sources = new Source();
      sources.CorporationId = _corporationId;
      sources.Description = string.Empty;
      sources.IsActive = true;
      sources.Name = string.Empty;
      sources.SourceId = Guid.NewGuid();
      sources.TokenId = Guid.NewGuid();
      e.NewItem = sources;
    }

    public class SourceItem
    {
      private Guid _corporationId1;
      private string _description;
      private bool _isActive; …
Run Code Online (Sandbox Code Playgroud)

c# linq wpf observablecollection

2
推荐指数
1
解决办法
7433
查看次数

与其他类的数组 - 对象 - Java

我有3类:Course,CourseEntryTranscript.在成绩单中,我有一个添加课程的功能,如:

public class Transcript {
    CourseEntry coursestaken[] = new CourseEntry[6];

    public void addCourse(Course course)
    {
        coursestaken[lastIndexOf(getCoursestaken())] = new CourseEntry(course);
    }
    (lastIndexOf gives me the empty array index - it's working on)
Run Code Online (Sandbox Code Playgroud)

在我的CourseEntry:

public class CourseEntry {
    Course course;
    char grade = 'I';

    public CourseEntry(Course course)
    {
        this.course = course;
    }
Run Code Online (Sandbox Code Playgroud)

在我的Course:

public  class Course {
    int courseNumber,credits;
    String courseName;

    public Course addNewCourse(int courseNumber, int credits, String courseName)
    {
        this.courseNumber = …
Run Code Online (Sandbox Code Playgroud)

java arrays class

0
推荐指数
1
解决办法
146
查看次数