对 Xamarin Forms Android 特定代码项目进行单元测试
Posted
技术标签:
【中文标题】对 Xamarin Forms Android 特定代码项目进行单元测试【英文标题】:Unit testing a Xamarin Forms Android specific code project 【发布时间】:2017-07-09 20:38:22 【问题描述】:我在完成 Xamarin.Forms 应用程序时遇到了问题。
目前,我正在尝试对 android 服务进行单元测试。
所以目前这意味着我在这一点上做了以下事情:
-
删除了 ios 项目的默认 Xamarin 表单应用程序
创建的 PCL 中的基本表单
在 Xamarin.Forms PCL 中创建样式
在 Xamarin.Forms.Droid 项目中有基本主题
完成之后,我创建了 Xamarin UITest Android 项目
现在,我添加了对 Xamarin Forms.Droid 项目的引用
每次我启动必须在 Android 模拟器中运行的单元测试时,都找不到主题。
在驻留在 PCL 中的 app.xml 中
<Application.Resources>
<!-- Application resource dictionary -->
<ResourceDictionary>
<Color x:Key="BackgroundGlobal">#ff333333</Color>
<Color x:Key="MidGradient">#ff0d0d0d</Color>
<Color x:Key="BottomGradient">Black</Color>
<Color x:Key="MenuTextColor">Azure</Color>
<Style TargetType="ImageCell" x:Key="Clicky">
<Setter Property="TextColor" Value="StaticResource MenuTextColor"/>
<Setter Property="DetailColor" Value="Aqua"/>
</Style>
</ResourceDictionary>
</Application.Resources>
在 Xamarin.Forms.Droid Resource\Values\strings.xml 中
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<style name="MainTheme" parent="MainTheme.Base">
</style>
<!-- Base theme applied no matter what API -->
<style name="MainTheme.Base" parent="Theme.AppCompat">
<!--If you are using revision 22.1 please use just windowNoTitle. Without android:-->
<item name="windowNoTitle">true</item>
<!--We will be using the toolbar so no need to show ActionBar-->
<item name="windowActionBar">false</item>
<!-- Set theme colors from http://www.google.com/design/spec/style/color.html#color-color-palette-->
<!-- colorPrimary is used for the default action bar background -->
<item name="colorPrimary">#2196F3</item>
<!-- colorPrimaryDark is used for the status bar -->
<item name="colorPrimaryDark">#1976D2</item>
<!-- colorAccent is used as the default value for colorControlActivated
which is used to tint widgets -->
<item name="colorAccent">#FF4081</item>
<!-- You can also set colorControlNormal, colorControlActivated
colorControlHighlight and colorSwitchThumbNormal. -->
<item name="windowActionModeOverlay">true</item>
<item name="android:datePickerDialogTheme">@style/AppCompatDialogStyle</item>
</style>
<style name="AppCompatDialogStyle" parent="Theme.AppCompat.Light.Dialog">
<item name="colorAccent">#FF4081</item>
</style>
</resources>
我目前得到以下信息:
Severity Code Description Project File Line Suppression State Error
Error: No resource found that matches the given name (at 'theme' with value '@style/MainTheme'). Xamarin.Forms.Droid.Tests C:\dev\git\example\Xamarin.Forms.Droid.Tests\obj\Debug\android\manifest\AndroidManifest.xml 9
【问题讨论】:
styles.xml 中是否存在 MainTheme?你可以在 Resource -> values -> styles.xml 中看到它。 根据请求,我更新了显示来自 Xamarin.Forms.Droid 的 pcl 样式和字符串/主题的示例。此外,测试项目是默认设置的 Xamarin.Forms.Android 和测试项目的资源/依赖项。 【参考方案1】:未找到与给定名称匹配的资源(在“主题”处,值为“@style/MainTheme”)。
Resource\Values\strings.xml
只是为您的应用程序提供带有可选文本样式和格式的文本字符串。三种类型的资源可以为您的应用程序提供字符串:String
、String Array
和 Quantity Strings(Plurals)
。
你应该把你的主题风格放在Resource\Values\styles.xml
而不是styles.xml
,比如this。
有关Style Resource
的更多信息,您可以阅读此document。
【讨论】:
感谢您的回答。昨天我没能像我想要的那样迅速做出反应,因为我最终把我的背扔了出去。反正。@style/MainTheme
非常完美!在查看了我写的内容后,我发现,我确实在 style.xml 而不是 strings.xml 中有东西。无论哪种情况,我都决定将我的问题留给其他可能也需要帮助的人。再次,非常感谢您的帮助!以上是关于对 Xamarin Forms Android 特定代码项目进行单元测试的主要内容,如果未能解决你的问题,请参考以下文章
Xamarin.Auth:使用身份提供者对用户进行身份验证 [xamarin forms - Android]
对 Xamarin Forms Android 特定代码项目进行单元测试
如何更改Android中选项卡页面标题的选定和未选定颜色:Xamarin Forms
无法在 UWP 中设置 SQLite 对象 - Xamarin Forms