我对我的单元测试方法有两个顾虑:
我问自己,当我的方法名称说: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) 我想从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)
现在我想显式设置此视图的缓存过期时间.如果我理解正确,则到期将全局应用于缓存.
是否可以设置每个查询的到期时间?
我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,结果相同)
我创建了许多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
我知道这已经一次又一次地讨论了,但是我似乎无法得到一个一步一步的双重划分的最简单的例子,导致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#在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) 我正在使用Visual Studio 2012开发Asp.net MVC4项目.
在调试期间出现错误时,它会用于停止错误.
但突然间,调试器不会停止,只是吐出错误信息网页,如下所示.
'/'应用程序中的服务器错误.
给定的密钥不在字典中.
描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.
异常详细信息:System.Collections.Generic.KeyNotFoundException:字典中不存在给定的键.
来源错误:......
堆栈跟踪: ...
如何设置调试器以停止错误?
我有一个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"?
是否可以仅使用文件下载 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)