質問編集履歴

18

修正

2020/08/26 13:41

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -236,6 +236,8 @@
236
236
 
237
237
  最小構成でモデルを1つにした時でも同様のエラーが出ています。
238
238
 
239
+ NullReferenceExceptionは発生しなくなりました。
240
+
239
241
 
240
242
 
241
243
  ```C#

17

修正

2020/08/26 13:41

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -286,6 +286,8 @@
286
286
 
287
287
 
288
288
 
289
+ ■ エラー時の出力
290
+
289
291
  ```txt
290
292
 
291
293
  'vstest.executionengine.x86.exe' (CLR v4.0.30319: DefaultDomain): 'C:\WINDOWS\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll' が読み込まれました。シンボルの読み込みをスキップしました。モジュールは最適化されていて、デバッグ オプションの [マイ コードのみ] 設定が有効になっています。

16

修正

2020/08/26 13:40

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -18,7 +18,9 @@
18
18
 
19
19
 
20
20
 
21
- ご教授お願ます。
21
+ または、他の方法として、ユニットテスト時に、手動のトランザクションダミーでも実行できればと考えています。
22
+
23
+
22
24
 
23
25
 
24
26
 

15

追記

2020/08/26 13:39

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- EntityFrameworkで、Model中のEnumのプロパティをNULL許容にするとUnitテスト時にDbContextでエラーする
1
+ EntityFrameworkで、Unitテスト時に手動のTransactionでエラーする
test CHANGED
@@ -190,6 +190,116 @@
190
190
 
191
191
 
192
192
 
193
+ 一旦、ApplicationDbContextを標準のままに戻し、DbContext用クラスを別に用意しました。
194
+
195
+
196
+
197
+ public class TestDbContext : DbContext {
198
+
199
+ public TestDbContext() : base("TestConnection") { }
200
+
201
+
202
+
203
+ public DbSet<A_Master> A_Masters { get; set; }
204
+
205
+ }
206
+
207
+
208
+
209
+ 【追記】
210
+
211
+ ApplicationDbContextを標準のものに戻し、ASP.NET Identity用のデータベースと、通常のModelでデータベースを分けるところまで実施しました。
212
+
213
+
214
+
215
+ 2つのデータベースと、テーブルを作る部分までは問題ありませんでしたが、
216
+
217
+ モデルのEnumの部分での変化はありませんでした。
218
+
219
+
220
+
221
+ その他に試したこととして、
222
+
223
+ ・モデルを1つにしても、ユニットテスト時に手動トランザクションでエラーがしてました。
224
+
225
+ ・手動トランザクションのエラーがしない状態の時のプロジェクトファイルを、違うパソコンで実行すると手動トランザクションのエラーが発生
226
+
227
+ ・コマンドでのテーブル作成時にはコマンドエラーはしない
228
+
229
+
230
+
231
+ 他の方法として、ユニットテスト時に、手動のトランザクションをダミーでも実行できればと考えています。
232
+
233
+
234
+
235
+ 最小構成でモデルを1つにした時でも同様のエラーが出ています。
236
+
237
+
238
+
239
+ ```C#
240
+
241
+ public async Task<ActionResult> Create() {
242
+
243
+ // ユニットテスト時、usingの行でエラー
244
+
245
+ using (var dbContextTransaction = this.unitOfWork.TestDbContext.Database.BeginTransaction()) {
246
+
247
+ Debug.WriteLine("Do");
248
+
249
+
250
+
251
+ dbContextTransaction.Commit();
252
+
253
+ };
254
+
255
+
256
+
257
+ /*
258
+
259
+ // ユニットテスト時、UnitOfWorkを使用せず、直接こちらでも実施しても同じエラー
260
+
261
+ // usingの行でエラー
262
+
263
+ var context = new TestSpecificationSystemDbContext();
264
+
265
+ using (var testContext = context.Database.BeginTransaction()) {
266
+
267
+ Debug.WriteLine("Do");
268
+
269
+
270
+
271
+ testContext.Commit();
272
+
273
+ };
274
+
275
+ */
276
+
277
+
278
+
279
+ return null;
280
+
281
+ }
282
+
283
+ ```
284
+
285
+
286
+
287
+ ```txt
288
+
289
+ 'vstest.executionengine.x86.exe' (CLR v4.0.30319: DefaultDomain): 'C:\WINDOWS\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll' が読み込まれました。シンボルの読み込みをスキップしました。モジュールは最適化されていて、デバッグ オプションの [マイ コードのみ] 設定が有効になっています。
290
+
291
+ 'vstest.executionengine.x86.exe' (CLR v4.0.30319: DefaultDomain): 'C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO 12.0\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\TESTWINDOW\vstest.executionengine.x86.exe' が読み込まれました。PDB ファイルを開けないか、ファイルが見つかりません。
292
+
293
+ 'vstest.executionengine.x86.exe' (CLR v4.0.30319: vstest.executionengine.x86.exe): 'C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO 12.0\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\TESTWINDOW\Microsoft.VisualStudio.TestPlatform.TestExecutor.Core.dll' が読み込まれました。PDB ファイルを開けないか、ファイルが見つかりません。
294
+
295
+ ...(省略)
296
+
297
+ ```
298
+
299
+
300
+
301
+
302
+
193
303
 
194
304
 
195
305
  ### 補足情報(FW/ツールのバージョンなど)

14

EnumのNULL許容について追記

2020/08/26 13:35

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -180,6 +180,18 @@
180
180
 
181
181
 
182
182
 
183
+ 【追記】EnumのNULL許容について
184
+
185
+ マスタ以外のEnumのNULL許容は問題ありませんでした。
186
+
187
+ マスタの1モデルのEnumのNULL許容でこの問題が発生していますので、
188
+
189
+ 上記のコードでは再現ができないかもしれません。
190
+
191
+
192
+
193
+
194
+
183
195
  ### 補足情報(FW/ツールのバージョンなど)
184
196
 
185
197
  .NET Framework 4.7.2

13

修正

2020/08/23 04:33

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -174,7 +174,7 @@
174
174
 
175
175
 
176
176
 
177
- ・EnumプロパティをNULL許容にした場合、全体(他のモデルにも)に影響
177
+ ・EnumプロパティをNULL許容にした場合、全体(他のテストにも)に影響
178
178
 
179
179
  ![イメージ説明](ca4ce2b961a6ea2b2af07366ccc756a8.png)
180
180
 

12

修正

2020/08/23 04:25

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -174,7 +174,7 @@
174
174
 
175
175
 
176
176
 
177
- ・EnumプロパティをNULL許容にした場合、全体(他のモデルにも)に影響
177
+ ・EnumプロパティをNULL許容にした場合、全体(他のモデルにも)に影響
178
178
 
179
179
  ![イメージ説明](ca4ce2b961a6ea2b2af07366ccc756a8.png)
180
180
 

11

修正

2020/08/23 04:12

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -174,7 +174,7 @@
174
174
 
175
175
 
176
176
 
177
- ・EnumプロパティをNULL許容にした場合、全体に影響
177
+ ・EnumプロパティをNULL許容にした場合、全体(他のモデルも)に影響
178
178
 
179
179
  ![イメージ説明](ca4ce2b961a6ea2b2af07366ccc756a8.png)
180
180
 

10

ユニットテストの状況 追記

2020/08/23 04:11

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -138,7 +138,7 @@
138
138
 
139
139
 
140
140
 
141
- // IdentityModelのApplicationDbContext
141
+ // 【追記】IdentityModelのApplicationDbContext
142
142
 
143
143
  public class ApplicationDbContext : IdentityDbContext<ApplicationUser> {
144
144
 
@@ -166,6 +166,20 @@
166
166
 
167
167
 
168
168
 
169
+ 【追記】ユニットテストの状況
170
+
171
+ ・EnumプロパティをNULL許容にしない場合
172
+
173
+ ![イメージ説明](847c92d4c2ff5219caed37c3d9eed222.png)
174
+
175
+
176
+
177
+ ・EnumプロパティをNULL許容にした場合、全体に影響
178
+
179
+ ![イメージ説明](ca4ce2b961a6ea2b2af07366ccc756a8.png)
180
+
181
+
182
+
169
183
  ### 補足情報(FW/ツールのバージョンなど)
170
184
 
171
185
  .NET Framework 4.7.2

9

文章訂正

2020/08/23 04:06

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- EntityFrameworkで、Model中のEnumのプロパティをNULL許容にすると
5
+ ASP.NET MVCのEntityFrameworkで、Model中のEnumのプロパティをNULL許容にすると
6
6
 
7
7
  Unitテスト時の手動トランザクション(DbContext)でエラーしてしまい困っています。
8
8
 

8

文章訂正、ApplicationDbContextのコードを追記

2020/08/23 03:58

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -138,7 +138,7 @@
138
138
 
139
139
 
140
140
 
141
- // IdentityConfig.csのApplicationDbContext
141
+ // IdentityModelのApplicationDbContext
142
142
 
143
143
  public class ApplicationDbContext : IdentityDbContext<ApplicationUser> {
144
144
 

7

文章修正、ApplicationDbContextの詳細を追記

2020/08/23 03:54

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- ASP.NET MVC5で、Model中のEnumのプロパティをNULL許容にするとUnitテスト時にDbContextでエラーする
1
+ EntityFrameworkで、Model中のEnumのプロパティをNULL許容にするとUnitテスト時にDbContextでエラーする
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- C#、ASP.NET MVC5で、Model中のEnumのプロパティをNULL許容にすると
5
+ EntityFrameworkで、Model中のEnumのプロパティをNULL許容にすると
6
6
 
7
7
  Unitテスト時の手動トランザクション(DbContext)でエラーしてしまい困っています。
8
8
 
@@ -136,6 +136,32 @@
136
136
 
137
137
  }
138
138
 
139
+
140
+
141
+ // IdentityConfig.csのApplicationDbContext
142
+
143
+ public class ApplicationDbContext : IdentityDbContext<ApplicationUser> {
144
+
145
+ public ApplicationDbContext() : base("DefaultConnection", throwIfV1Schema: false) {
146
+
147
+
148
+
149
+ }
150
+
151
+
152
+
153
+ public static ApplicationDbContext Create() {
154
+
155
+ return new ApplicationDbContext();
156
+
157
+ }
158
+
159
+
160
+
161
+ public DbSet<A_Master> A_Masters { get; set; }
162
+
163
+ }
164
+
139
165
  ```
140
166
 
141
167
 

6

修正

2020/08/23 03:53

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -12,7 +12,9 @@
12
12
 
13
13
 
14
14
 
15
- usingの時に例外が発生します。型 'System.NullReferenceException' の初回例外が WebApplication.dll で発生しました
15
+ usingの時に例外が発生します。型 'System.NullReferenceException' の初回例外が WebApplication.dll で発生しました
16
+
17
+ ただし、nullを設定している箇所がないか見直しましたが、見つかりません。
16
18
 
17
19
 
18
20
 

5

エラー出力追加

2020/08/23 02:16

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -9,6 +9,10 @@
9
9
 
10
10
 
11
11
  下記のコードでは、Unitテスト時はトランザクションを設定しても、ダミーリポジトリを使用するようにしているため、DB操作を行わないようにしてます。
12
+
13
+
14
+
15
+ usingの時に例外が発生します。型 'System.NullReferenceException' の初回例外が WebApplication.dll で発生しました
12
16
 
13
17
 
14
18
 

4

修正

2020/08/23 02:15

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -5,6 +5,10 @@
5
5
  C#、ASP.NET MVC5で、Model中のEnumのプロパティをNULL許容にすると
6
6
 
7
7
  Unitテスト時の手動トランザクション(DbContext)でエラーしてしまい困っています。
8
+
9
+
10
+
11
+ 下記のコードでは、Unitテスト時はトランザクションを設定しても、ダミーリポジトリを使用するようにしているため、DB操作を行わないようにしてます。
8
12
 
9
13
 
10
14
 

3

修正

2020/08/23 02:00

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -46,7 +46,7 @@
46
46
 
47
47
 
48
48
 
49
- public class C_TestController : Controller {
49
+ public class A_MasterController : Controller {
50
50
 
51
51
  private readonly UnitOfWork unitOfWork;
52
52
 
@@ -54,7 +54,7 @@
54
54
 
55
55
  // Default constructor
56
56
 
57
- public C_TestController() {
57
+ public A_MasterController() {
58
58
 
59
59
  this.unitOfWork = new UnitOfWork();
60
60
 
@@ -64,7 +64,7 @@
64
64
 
65
65
  // Unit testing use
66
66
 
67
- public C_TestController(UnitOfWork dummyRepositoryUnitOfWork) {
67
+ public A_MasterController(UnitOfWork dummyRepositoryUnitOfWork) {
68
68
 
69
69
  this.unitOfWork = dummyRepositoryUnitOfWork;
70
70
 
@@ -100,8 +100,6 @@
100
100
 
101
101
  public IA_MasterRepository A_MasterRepository { get; private set; }
102
102
 
103
- public IC_TestTestRepository C_TestRepository { get; private set; }
104
-
105
103
 
106
104
 
107
105
  public ApplicationDbContext ApplicationDbContext {
@@ -116,8 +114,6 @@
116
114
 
117
115
  this.A_MasterRepository = new A_MasterRepository(context);
118
116
 
119
- this.C_TestRepository = new C_TestRepository(context);
120
-
121
117
  }
122
118
 
123
119
 
@@ -126,15 +122,7 @@
126
122
 
127
123
  this.A_MasterRepository = dummyA_MasterRepository;
128
124
 
129
- }
125
+ }
130
-
131
-
132
-
133
- public UnitOfWork(IC_TestRepository dummyC_TestRepository) {
134
-
135
- this.C_TestRepository = dummyC_TestRepository;
136
-
137
- }
138
126
 
139
127
  }
140
128
 

2

タグ修正

2020/08/23 01:05

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
File without changes

1

修正

2020/08/23 00:59

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- ASP.NET MVC5で、Model中のEnumのプロパティをNULL許容にするとDbContextでエラーする
1
+ ASP.NET MVC5で、Model中のEnumのプロパティをNULL許容にするとUnitテスト時にDbContextでエラーする
test CHANGED
File without changes