小编cha*_*sos的帖子

我的单位测试过多了吗?

我对我的单元测试方法有两个顾虑:

  1. 我在一种测试方法中测试过多吗?
  2. 我的测试方法名称如何反映所有测试期望?

我问自己,当我的方法名称说:ReturnInvalidModelState然后我的另外Asserts两个不正确.至少关于方法名称......

[Test]
public void Create_TemplateAlreadyExists_ReturnInvalidModelState()
{
    // ARRANGE
    TemplateViewModel templateViewModel = new TemplateViewModel { 
        Name = "MyTest" 
    };

    Mock<ITemplateDataProvider> mock1 = new Mock<ITemplateDataProvider>();
    Mock<IMappingEngine> mock2 = new Mock<IMappingEngine>();

    TemplateController controller = 
        new TemplateController(mock1.Object, mock2.Object);
    mock1.Setup(m => m.TemplateExists("MyTest")).Returns(true);
    // Set ModelState.IsValid to false
    controller.ModelState.AddModelError("Name", 
                                        "This name already exists.");

    // ACT
    ActionResult result = controller.Create(templateViewModel);

    // ASSERT
    Assert.IsFalse(controller.ModelState.IsValid);
    Assert.IsInstanceOfType(typeof(PartialViewResult), result);
    Assert.AreEqual(templateViewModel, ((PartialViewResult)result).Model);
}

[HttpPost]
public ActionResult Create(TemplateViewModel templateViewModel)
{
    if (ModelState.IsValid
        && !_templateDataProvider.TemplateExists(templateViewModel.Name))
    {

        Template …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc unit-testing

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

设置缓存视图时的到期时间

我想从Oracle中的视图缓存结果.我的观点被宣布为:

CREATE VIEW SOME_VIEW AS
SELECT
    /*+ RESULT_CACHE */
    u.name
    c.info
FROM
    Users u
    LEFT OUT JOIN Contacts c ON c.user_id = u.id
Run Code Online (Sandbox Code Playgroud)

现在我想显式设置此视图的缓存过期时间.如果我理解正确,则到期将全局应用于缓存.

是否可以设置每个查询的到期时间?

oracle caching oracle12c

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

MSTest UnitTestingFramework 10.1 vs 10.0

Microsoft.VisualStudio.QualityTools.UnitTestFramework在测试项目中将我的参考从10更新到10.1,预期的异常似乎不再是它的工作了.试试这个例子......

[TestMethod]
[ExpectedException(typeof(FileNotFoundException))]
public void SanityTest()
{
    File.ReadAllLines("TheresNoWayThisThingExists");
}
Run Code Online (Sandbox Code Playgroud)

测试失败.如果我恢复到10(必须撤消),它会通过.有人验证这个还是仅仅是我?我已经在resharper的测试运行器和ms测试运行器中尝试了相同的结果.

编辑:其他信息

它似乎知道它通过了......有点儿.为'noExceptionMessage'添加字符串值不会在失败时返回该字符串值.

AllowDerivedTypes似乎也没有效果.(我将FileNotFound换成了Exception,结果相同)

mstest visual-studio-2010

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

安装Visual Studio 11 beta后,不再通过Visual Studio 2010执行测试

我创建了许多TestProjects Visual-Studio-2010 Ultimate.所有测试都成功执行(它们是简单的单元测试).现在我安装了Visual-Studio-11 beta,我意识到它们没有被执行VS-2010.我也从命令行通过MSTest(2010)尝试了它而没有成功.测试执行似乎开始(并且永远不会结束),但测试不会在没有报告任何错误的情况下执行.通过VS-11一切正常.

有没有人有同样的问题?

c# testing unit-testing visual-studio-2010 visual-studio-2012

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

从visual studio连接到tfs Azure

在云端Team Projecttfs 2012上创建了我的第一个帐户.

现在,我如何通过Visual Studio 2012电脑连接到它?

azure visual-studio-2010 visual-studio-2012 tfs2012 azure-devops

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

划分双打时C#精度损失

我知道这已经一次又一次地讨论了,但是我似乎无法得到一个一步一步的双重划分的最简单的例子,导致C#的预期的,不完整的结果 - 所以我想知道是否也许有一些编译器标志或其他奇怪的我没有想到的.考虑这个例子:

double v1 = 0.7;
double v2 = 0.025;
double result = v1 / v2;
Run Code Online (Sandbox Code Playgroud)

当我在最后一行之后断开并在VS调试器中检查它时,"result"的值是27.999999999999996.我知道我可以通过更改为"十进制"来解决它,但在周围程序的情况下这是不可能的.像这样的两个低精度双打不能分成28的正确值是不奇怪的?对Math.Round来说唯一的解决方案是结果吗?

c# precision double

5
推荐指数
2
解决办法
7749
查看次数

如何区分Outlook 2010中的内嵌图像和附件[C#]

嗨,我必须使用C#在Outlook 2010的本地目录中分别阅读附件和内联图像.我已经使用了属性和内容ID概念.我正在使用以下代码,但它现在正在工作.

if (mailItem.Attachments.Count > 0)
{
    /*for (int i = 1; i <= mailItem.Attachments.Count; i++)
    {
    string filePath = Path.Combine(destinationDirectory, mailItem.Attachments[i].FileName);
    mailItem.Attachments[i].SaveAsFile(filePath);
    AttachmentDetails.Add(filePath);
    }*/

    foreach (Outlook.Attachment atmt in mailItem.Attachments)
    {
        MessageBox.Show("inside for each loop" );
        prop = atmt.PropertyAccessor;
        string contentID = (string)prop.GetProperty(SchemaPR_ATTACH_CONTENT_ID);
        MessageBox.Show("content if is " +contentID);

        if (contentID != "")
        {
            MessageBox.Show("inside if loop");
            string filePath = Path.Combine(destinationDirectory, atmt.FileName);
            MessageBox.Show(filePath);
            atmt.SaveAsFile(filePath);
            AttachmentDetails.Add(filePath);
        }
        else
        {
            MessageBox.Show("inside else loop");
            string filePath = Path.Combine(destinationDirectoryT, atmt.FileName);
            atmt.SaveAsFile(filePath);
            AttachmentDetails.Add(filePath);
        }
    }
} …
Run Code Online (Sandbox Code Playgroud)

c# msdn mailitem outlook-addin

5
推荐指数
1
解决办法
3942
查看次数

调试器不会因错误而停止

我正在使用Visual Studio 2012开发Asp.net MVC4项目.

在调试期间出现错误时,它会用于停止错误.

但突然间,调试器不会停止,只是吐出错误信息网页,如下所示.

'/'应用程序中的服务器错误.

给定的密​​钥不在字典中.

描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.Collections.Generic.KeyNotFoundException:字典中不存在给定的键.

来源错误:......

堆栈跟踪: ...

如何设置调试器以停止错误?

c# asp.net debugging asp.net-mvc

5
推荐指数
2
解决办法
5061
查看次数

将参数传递给使用MSTest.exe从命令行运行的编码UI测试

我有一个CodedUiTest,它有几种测试方法.每次我通过MSTest从命令行执行测试时,我希望能够将不同的路径传递给测试.我怎样才能做到这一点?

这就是我现在执行测试的方式:

{
    System.Diagnostics.Process codedUIProcess = new System.Diagnostics.Process();
    System.Diagnostics.ProcessStartInfo codedUIStartInfo = new System.Diagnostics.ProcessStartInfo();

    codedUIStartInfo.FileName = @"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe";
    codedUIStartInfo.Arguments = @"/testcontainer:C:\DailyBuildAutoTest.dll /test:MyUITestAssembly\MyCodedUITest";
    codedUIStartInfo.CreateNoWindow = true;

    codedUIProcess.StartInfo = codedUIStartInfo;

    codedUIProcess.Start();
}
Run Code Online (Sandbox Code Playgroud)

有没有办法将字符串之类的参数传递给"MyCodedUITest"?

c# mstest coded-ui-tests visual-studio-2012

5
推荐指数
1
解决办法
6075
查看次数

仅下载 build.gradle 文件的依赖项

是否可以仅使用文件下载 gradle 依赖项build.gradle

我想要完成的任务如下:

我有一组单元测试,我想在 docker 容器内执行它们(作为 CI 过程的一部分)。最初,我使用docker hub 中的openjdk:8-jdk映像作为测试的基础映像。因此,docker compose 文件包含以下内容:

version: '3.2'

services:

  unit:
    image: openjdk:8-jdk
    volumes:
      - ..:/usr/test
    working_dir: /usr/test
    command: sh -c "exec ./gradlew junitPlatformTest -Punit -p moduleA/"
Run Code Online (Sandbox Code Playgroud)

整个项目安装在/usr/test容器内的目录中。当容器启动时,它会junitPlatformTest针对 执行任务moduleA。图像的问题openjdk:8-jdk是每次运行服务时都会下载 gradle 及其依赖项unit

为了解决这个问题,我决定创建一个新映像,其中已下载 gradle 和我的项目依赖项。其Dockerfile内容如下:

FROM openjdk:8-jdk
COPY . /usr/test
WORKDIR /usr/test
RUN apt-get -y install wget unzip
RUN wget https://services.gradle.org/distributions/gradle-4.1-bin.zip
RUN mkdir /opt/gradle
RUN unzip -d /opt/gradle gradle-4.1-bin.zip …
Run Code Online (Sandbox Code Playgroud)

java gradle docker docker-compose

5
推荐指数
1
解决办法
6128
查看次数